You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
1
(9) |
2
(13) |
3
(12) |
4
(4) |
5
(5) |
|
6
(5) |
7
(16) |
8
(9) |
9
(14) |
10
(15) |
11
(7) |
12
(2) |
|
13
(7) |
14
(9) |
15
(8) |
16
(6) |
17
|
18
(2) |
19
(4) |
|
20
|
21
(7) |
22
(12) |
23
(6) |
24
(2) |
25
(3) |
26
(2) |
|
27
(2) |
28
(5) |
29
(7) |
30
(10) |
|
|
|
|
From: Julian S. <js...@ac...> - 2010-06-13 22:17:10
|
On Sunday, June 13, 2010, Bart Van Assche wrote: > Cross-compilation works again fine on my setup with this patch (host > x86_64-linux, target powerpc-linux). Great, thanks for the testing (also to Mogens for same). Committed as r11174. And sorry for the instability; I hope the linking should work more smoothly from now on. J |
|
From: <sv...@va...> - 2010-06-13 22:14:07
|
Author: sewardj
Date: 2010-06-13 23:13:58 +0100 (Sun, 13 Jun 2010)
New Revision: 11174
Log:
Remove link_tool_exe.c and replace it with perl scripts that do the
same thing. A .c file doesn't work for cross compilation.
Added:
trunk/coregrind/link_tool_exe_aix5.in
trunk/coregrind/link_tool_exe_darwin.in
trunk/coregrind/link_tool_exe_linux.in
Removed:
trunk/coregrind/link_tool_exe.c
Modified:
trunk/cachegrind/Makefile.am
trunk/callgrind/Makefile.am
trunk/configure.in
trunk/coregrind/Makefile.am
trunk/drd/Makefile.am
trunk/exp-bbv/Makefile.am
trunk/exp-ptrcheck/Makefile.am
trunk/helgrind/Makefile.am
trunk/lackey/Makefile.am
trunk/massif/Makefile.am
trunk/memcheck/Makefile.am
trunk/none/Makefile.am
Modified: trunk/cachegrind/Makefile.am
===================================================================
--- trunk/cachegrind/Makefile.am 2010-06-13 14:49:04 UTC (rev 11173)
+++ trunk/cachegrind/Makefile.am 2010-06-13 22:13:58 UTC (rev 11174)
@@ -56,7 +56,7 @@
cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = \
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LINK = \
- $(top_builddir)/coregrind/link_tool_exe \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
@VALT_LOAD_ADDRESS@ \
$(LINK) \
$(cachegrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) \
@@ -76,7 +76,7 @@
cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS = \
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LINK = \
- $(top_builddir)/coregrind/link_tool_exe \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
@VALT_LOAD_ADDRESS@ \
$(LINK) \
$(cachegrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) \
Modified: trunk/callgrind/Makefile.am
===================================================================
--- trunk/callgrind/Makefile.am 2010-06-13 14:49:04 UTC (rev 11173)
+++ trunk/callgrind/Makefile.am 2010-06-13 22:13:58 UTC (rev 11174)
@@ -66,7 +66,7 @@
callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = \
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LINK = \
- $(top_builddir)/coregrind/link_tool_exe \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
@VALT_LOAD_ADDRESS@ \
$(LINK) \
$(callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) \
@@ -86,7 +86,7 @@
callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS = \
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LINK = \
- $(top_builddir)/coregrind/link_tool_exe \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
@VALT_LOAD_ADDRESS@ \
$(LINK) \
$(callgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) \
Modified: trunk/configure.in
===================================================================
--- trunk/configure.in 2010-06-13 14:49:04 UTC (rev 11173)
+++ trunk/configure.in 2010-06-13 22:13:58 UTC (rev 11174)
@@ -251,11 +251,6 @@
VGCONF_OS="aix5"
;;
- *freebsd*)
- AC_MSG_RESULT([ok (${host_os})])
- VGCONF_OS="freebsd"
- ;;
-
*darwin*)
AC_MSG_RESULT([ok (${host_os})])
VGCONF_OS="darwin"
@@ -1278,9 +1273,12 @@
CFLAGS=$safe_CFLAGS
-# does this compiler support -Wl,--build-id=none ?
+# does the linker support -Wl,--build-id=none ? Note, it's
+# important that we test indirectly via whichever C compiler
+# is selected, rather than testing /usr/bin/ld or whatever
+# directly.
-AC_MSG_CHECKING([if gcc accepts -Wl,--build-id=none])
+AC_MSG_CHECKING([if the linker accepts -Wl,--build-id=none])
safe_CFLAGS=$CFLAGS
CFLAGS="-Wl,--build-id=none"
@@ -1864,6 +1862,12 @@
exp-bbv/tests/ppc32-linux/Makefile
exp-bbv/tests/arm-linux/Makefile
])
+AC_CONFIG_FILES([coregrind/link_tool_exe_linux],
+ [chmod +x coregrind/link_tool_exe_linux])
+AC_CONFIG_FILES([coregrind/link_tool_exe_darwin],
+ [chmod +x coregrind/link_tool_exe_darwin])
+AC_CONFIG_FILES([coregrind/link_tool_exe_aix5],
+ [chmod +x coregrind/link_tool_exe_aix5])
AC_OUTPUT
cat<<EOF
Modified: trunk/coregrind/Makefile.am
===================================================================
--- trunk/coregrind/Makefile.am 2010-06-13 14:49:04 UTC (rev 11173)
+++ trunk/coregrind/Makefile.am 2010-06-13 22:13:58 UTC (rev 11174)
@@ -422,27 +422,6 @@
endif
#----------------------------------------------------------------------------
-# link_tool_exe, the wrapper for the system linker
-#----------------------------------------------------------------------------
-
-noinst_PROGRAMS += link_tool_exe
-
-link_tool_exe_SOURCES = link_tool_exe.c
-link_tool_exe_CPPFLAGS = $(AM_CPPFLAGS_PRI)
-link_tool_exe_CFLAGS = $(AM_CFLAGS_PRI)
-link_tool_exe_CCASFLAGS = $(AM_CCASFLAGS_PRI)
-link_tool_exe_LDFLAGS = $(AM_CFLAGS_PRI)
-
-# force link_tool_exe to be built before libcoregrind.a is, and hence
-# before any of the tool executables are linked, since they in turn
-# are dependent on libcoregrind.a. Unfortunately this doesn't give a
-# dependence on link_tool_exe.c: ideally if link_tool_exe.c is
-# changed, then 'make' rebuilds link_tool_exe, but the tool
-# executables themselves are not relinked. I can't figure out how
-# to get that to happen.
-BUILT_SOURCES += link_tool_exe
-
-#----------------------------------------------------------------------------
# General stuff
#----------------------------------------------------------------------------
Deleted: trunk/coregrind/link_tool_exe.c
===================================================================
--- trunk/coregrind/link_tool_exe.c 2010-06-13 14:49:04 UTC (rev 11173)
+++ trunk/coregrind/link_tool_exe.c 2010-06-13 22:13:58 UTC (rev 11174)
@@ -1,171 +0,0 @@
-
-/* This program handles linking the tool executables, statically and
- at an alternative load address. Linking them statically sidesteps
- all sorts of complications to do with having two copies of the
- dynamic linker (valgrind's and the client's) coexisting in the same
- process. The alternative load address is needed because Valgrind
- itself will load the client at whatever address it specifies, which
- is almost invariably the default load address. Hence we can't
- allow Valgrind itself (viz, the tool executable) to be loaded at
- that address.
-
- Unfortunately there's no standard way to do 'static link at
- alternative address', so this program handles the per-platform
- hoop-jumping.
-*/
-
-/* What we get passed here is:
- first arg
- the alternative load address
- all the rest of the args
- the gcc invokation to do the final link, that
- the build system would have done, left to itself
-
- We just let assertions fail rather than do proper error reporting.
- We don't expect the users to run this directly. It is only run
- from as part of the build process, with carefully constrained
- inputs.
-*/
-
-/* ------------------------- LINUX ------------------------- */
-
-#if defined(VGO_linux)
-
-/* Scheme is simple: pass the specified command to the linker as-is,
- except, add "-static" and "-Ttext=<argv[1]>" to it.
-*/
-
-// Don't NDEBUG this; the asserts are necesary for
-// safety checks.
-#include <assert.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/wait.h> /* WEXITSTATUS */
-
-int main ( int argc, char** argv )
-{
- int i;
- int/*bool*/ failed = 0;
- size_t reqd = 0;
-
- // expect at least: alt-load-address gcc -o foo bar.o
- assert(argc > 5);
-
- // check for plausible-ish alt load address
- char* ala = argv[1];
- assert(ala[0] == '0');
- assert(ala[1] == 'x');
-
- // We'll need to invoke this to do the linking
- char* gcc = argv[2];
-
- // and the 'restargs' are argv[3 ..]
-
- // so, build up the complete command here:
- // 'gcc' -static -Ttext='ala' 'restargs'
-
- // first, do length safety checks
- reqd += 1+ strlen(gcc);
- reqd += 1+ 100/*let's say*/ + strlen(ala);
- for (i = 3; i < argc; i++)
- reqd += 1+ strlen(argv[i]);
-
- reqd += 1;
- char* cmd = calloc(reqd,1);
- assert(cmd);
-
- char ttext[100];
- assert(strlen(ala) < 30);
- memset(ttext, 0, sizeof(ttext));
- sprintf(ttext, " -static -Wl,-Ttext=%s", ala);
-
- strcpy(cmd, gcc);
- strcat(cmd, ttext);
- for (i = 3; i < argc; i++) {
- strcat(cmd, " ");
- strcat(cmd, argv[i]);
- }
-
- assert(cmd[reqd-1] == 0);
-
- if (0) printf("\n");
- printf("link_tool_exe: %s\n", cmd);
- if (0) printf("\n");
-
- int r = system(cmd);
- if (r == -1 || WEXITSTATUS(r) != 0)
- failed = 1;
-
- free(cmd);
-
- // return the result of system.
- return failed ? 1 : 0;
-}
-
-/* ------------------------- DARWIN ------------------------ */
-
-#elif defined(VGO_darwin)
-
-/* Run the specified command as-is; ignore the specified load address
- (argv[1]). */
-
-// Don't NDEBUG this; the asserts are necesary for
-// safety checks.
-#include <assert.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-int main ( int argc, char** argv )
-{
- int i;
- int/*bool*/ failed = 0;
- size_t reqd = 0;
-
- // expect at least: alt-load-address gcc -o foo bar.o
- assert(argc > 5);
-
- // check for plausible-ish alt load address
- char* ala = argv[1];
- assert(ala[0] == '0');
- assert(ala[1] == 'x');
-
- // command to run is argv[2 ..]
-
- // so, build up the complete command here:
- // argv[2 ..]
-
- // first, do length safety checks
- for (i = 2; i < argc; i++)
- reqd += 1+ strlen(argv[i]);
-
- reqd += 1;
- char* cmd = calloc(reqd,1);
- assert(cmd);
-
- for (i = 2; i < argc; i++) {
- strcat(cmd, " ");
- strcat(cmd, argv[i]);
- }
-
- assert(cmd[reqd-1] == 0);
-
- if (0) printf("\n");
- printf("link_tool_exe: %s\n", cmd);
- if (0) printf("\n");
-
- int r = system(cmd);
- if (r == -1 || WEXITSTATUS(r) != 0)
- failed = 1;
-
- free(cmd);
-
- // return the result of system.
- return failed ? 1 : 0;
-}
-
-
-#else
-# error "Unsupported OS"
-#endif
Added: trunk/coregrind/link_tool_exe_aix5.in
===================================================================
--- trunk/coregrind/link_tool_exe_aix5.in (rev 0)
+++ trunk/coregrind/link_tool_exe_aix5.in 2010-06-13 22:13:58 UTC (rev 11174)
@@ -0,0 +1,6 @@
+#! @PERL@
+
+use warnings;
+use strict;
+
+die "link_tool_exe_@VGCONF_OS@ requires implementation";
Added: trunk/coregrind/link_tool_exe_darwin.in
===================================================================
--- trunk/coregrind/link_tool_exe_darwin.in (rev 0)
+++ trunk/coregrind/link_tool_exe_darwin.in 2010-06-13 22:13:58 UTC (rev 11174)
@@ -0,0 +1,52 @@
+#! @PERL@
+
+# This script handles linking the tool executables on MacOSX.
+#
+# What we get passed here is:
+# first arg
+# the alternative load address
+# all the rest of the args
+# the gcc invokation to do the final link, that
+# the build system would have done, left to itself
+#
+# Just ignore argv[1] and run the command specified by argv[2..] unchanged.
+
+use warnings;
+use strict;
+
+# expect at least: alt-load-address gcc -o foo bar.o
+die "Not enougn arguments"
+ if (($#ARGV + 1) < 5);
+
+my $ala = $ARGV[0];
+
+# check for plausible-ish alt load address
+die "Bogus alt-load address"
+ if (length($ala) < 3 || index($ala, "0x") != 0);
+
+# The cc invokation to do the final link
+my $cc = $ARGV[1];
+
+# and the 'restargs' are argv[2 ..]
+
+# so, build up the complete command here:
+# 'cc' 'restargs'
+
+my $cmd="$cc";
+
+# Add the rest of the parameters
+foreach my $n (2 .. $#ARGV) {
+ $cmd = "$cmd $ARGV[$n]";
+}
+
+print "link_tool_exe_darwin: $cmd\n";
+
+
+# Execute the command:
+my $r = system("$cmd");
+
+if ($r == 0) {
+ exit 0;
+} else {
+ exit 1;
+}
Added: trunk/coregrind/link_tool_exe_linux.in
===================================================================
--- trunk/coregrind/link_tool_exe_linux.in (rev 0)
+++ trunk/coregrind/link_tool_exe_linux.in 2010-06-13 22:13:58 UTC (rev 11174)
@@ -0,0 +1,89 @@
+#! @PERL@
+
+# This script handles linking the tool executables on Linux,
+# statically and at an alternative load address.
+#
+# Linking statically sidesteps all sorts of complications to do with
+# having two copies of the dynamic linker (valgrind's and the
+# client's) coexisting in the same process. The alternative load
+# address is needed because Valgrind itself will load the client at
+# whatever address it specifies, which is almost invariably the
+# default load address. Hence we can't allow Valgrind itself (viz,
+# the tool executable) to be loaded at that address.
+#
+# Unfortunately there's no standard way to do 'static link at
+# alternative address', so this program handles the per-platform
+# hoop-jumping.
+#
+#
+# What we get passed here is:
+# first arg
+# the alternative load address
+# all the rest of the args
+# the gcc invokation to do the final link, that
+# the build system would have done, left to itself
+#
+# We just let the script 'die' if something is wrong, rather than do
+# proper error reporting. We don't expect the users to run this
+# directly. It is only run as part of the build process, with
+# carefully constrained inputs.
+#
+# Linux specific complications:
+#
+# - need to support both old GNU ld and gold: use -Ttext= to
+# set the text segment address.
+#
+# - need to pass --build-id=none (that is, -Wl,--build-id=none to
+# gcc) if it accepts it, to ensure the linker doesn't add a
+# notes section which ends up at the default load address and
+# so defeats our attempts to keep that address clear for the
+# client. However, older linkers don't support this flag, so it
+# is tested for by configure.in and is shipped to us as part of
+# argv[2 ..].
+#
+#
+# So: what we actually do:
+#
+# pass the specified command to the linker as-is, except, add
+# "-static" and "-Ttext=<argv[1]>" to it.
+#
+
+use warnings;
+use strict;
+
+# expect at least: alt-load-address gcc -o foo bar.o
+die "Not enougn arguments"
+ if (($#ARGV + 1) < 5);
+
+my $ala = $ARGV[0];
+
+# check for plausible-ish alt load address
+die "Bogus alt-load address"
+ if (length($ala) < 3 || index($ala, "0x") != 0);
+
+# The cc invokation to do the final link
+my $cc = $ARGV[1];
+
+# and the 'restargs' are argv[2 ..]
+
+# so, build up the complete command here:
+# 'cc' -static -Ttext='ala' 'restargs'
+
+my $cmd="$cc -static -Wl,-Ttext=$ala";
+
+# Add the rest of the parameters
+foreach my $n (2 .. $#ARGV) {
+ $cmd = "$cmd $ARGV[$n]";
+}
+
+print "link_tool_exe_linux: $cmd\n";
+
+
+# Execute the command:
+my $r = system("$cmd");
+
+if ($r == 0) {
+ exit 0;
+} else {
+ exit 1;
+}
Modified: trunk/drd/Makefile.am
===================================================================
--- trunk/drd/Makefile.am 2010-06-13 14:49:04 UTC (rev 11173)
+++ trunk/drd/Makefile.am 2010-06-13 22:13:58 UTC (rev 11174)
@@ -80,7 +80,7 @@
drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = \
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LINK = \
- $(top_builddir)/coregrind/link_tool_exe \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
@VALT_LOAD_ADDRESS@ \
$(LINK) \
$(drd_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) \
@@ -100,7 +100,7 @@
drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS = \
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LINK = \
- $(top_builddir)/coregrind/link_tool_exe \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
@VALT_LOAD_ADDRESS@ \
$(LINK) \
$(drd_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) \
Modified: trunk/exp-bbv/Makefile.am
===================================================================
--- trunk/exp-bbv/Makefile.am 2010-06-13 14:49:04 UTC (rev 11173)
+++ trunk/exp-bbv/Makefile.am 2010-06-13 22:13:58 UTC (rev 11174)
@@ -26,7 +26,7 @@
exp_bbv_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = \
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
exp_bbv_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LINK = \
- $(top_builddir)/coregrind/link_tool_exe \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
@VALT_LOAD_ADDRESS@ \
$(LINK) \
$(exp_bbv_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) \
@@ -46,7 +46,7 @@
exp_bbv_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS = \
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
exp_bbv_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LINK = \
- $(top_builddir)/coregrind/link_tool_exe \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
@VALT_LOAD_ADDRESS@ \
$(LINK) \
$(exp_bbv_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) \
Modified: trunk/exp-ptrcheck/Makefile.am
===================================================================
--- trunk/exp-ptrcheck/Makefile.am 2010-06-13 14:49:04 UTC (rev 11173)
+++ trunk/exp-ptrcheck/Makefile.am 2010-06-13 22:13:58 UTC (rev 11174)
@@ -39,7 +39,7 @@
exp_ptrcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = \
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
exp_ptrcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LINK = \
- $(top_builddir)/coregrind/link_tool_exe \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
@VALT_LOAD_ADDRESS@ \
$(LINK) \
$(exp_ptrcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) \
@@ -59,7 +59,7 @@
exp_ptrcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS = \
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
exp_ptrcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LINK = \
- $(top_builddir)/coregrind/link_tool_exe \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
@VALT_LOAD_ADDRESS@ \
$(LINK) \
$(exp_ptrcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) \
Modified: trunk/helgrind/Makefile.am
===================================================================
--- trunk/helgrind/Makefile.am 2010-06-13 14:49:04 UTC (rev 11173)
+++ trunk/helgrind/Makefile.am 2010-06-13 22:13:58 UTC (rev 11174)
@@ -48,7 +48,7 @@
helgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = \
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
helgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LINK = \
- $(top_builddir)/coregrind/link_tool_exe \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
@VALT_LOAD_ADDRESS@ \
$(LINK) \
$(helgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) \
@@ -68,7 +68,7 @@
helgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS = \
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
helgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LINK = \
- $(top_builddir)/coregrind/link_tool_exe \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
@VALT_LOAD_ADDRESS@ \
$(LINK) \
$(helgrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) \
Modified: trunk/lackey/Makefile.am
===================================================================
--- trunk/lackey/Makefile.am 2010-06-13 14:49:04 UTC (rev 11173)
+++ trunk/lackey/Makefile.am 2010-06-13 22:13:58 UTC (rev 11174)
@@ -26,7 +26,7 @@
lackey_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = \
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
lackey_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LINK = \
- $(top_builddir)/coregrind/link_tool_exe \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
@VALT_LOAD_ADDRESS@ \
$(LINK) \
$(lackey_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) \
@@ -46,7 +46,7 @@
lackey_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS = \
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
lackey_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LINK = \
- $(top_builddir)/coregrind/link_tool_exe \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
@VALT_LOAD_ADDRESS@ \
$(LINK) \
$(lackey_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) \
Modified: trunk/massif/Makefile.am
===================================================================
--- trunk/massif/Makefile.am 2010-06-13 14:49:04 UTC (rev 11173)
+++ trunk/massif/Makefile.am 2010-06-13 22:13:58 UTC (rev 11174)
@@ -36,7 +36,7 @@
massif_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = \
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
massif_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LINK = \
- $(top_builddir)/coregrind/link_tool_exe \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
@VALT_LOAD_ADDRESS@ \
$(LINK) \
$(massif_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) \
@@ -56,7 +56,7 @@
massif_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS = \
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
massif_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LINK = \
- $(top_builddir)/coregrind/link_tool_exe \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
@VALT_LOAD_ADDRESS@ \
$(LINK) \
$(massif_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) \
Modified: trunk/memcheck/Makefile.am
===================================================================
--- trunk/memcheck/Makefile.am 2010-06-13 14:49:04 UTC (rev 11173)
+++ trunk/memcheck/Makefile.am 2010-06-13 22:13:58 UTC (rev 11174)
@@ -44,7 +44,7 @@
memcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = \
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
memcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LINK = \
- $(top_builddir)/coregrind/link_tool_exe \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
@VALT_LOAD_ADDRESS@ \
$(LINK) \
$(memcheck_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) \
@@ -64,7 +64,7 @@
memcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS = \
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
memcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LINK = \
- $(top_builddir)/coregrind/link_tool_exe \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
@VALT_LOAD_ADDRESS@ \
$(LINK) \
$(memcheck_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) \
Modified: trunk/none/Makefile.am
===================================================================
--- trunk/none/Makefile.am 2010-06-13 14:49:04 UTC (rev 11173)
+++ trunk/none/Makefile.am 2010-06-13 22:13:58 UTC (rev 11174)
@@ -26,7 +26,7 @@
none_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = \
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
none_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LINK = \
- $(top_builddir)/coregrind/link_tool_exe \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
@VALT_LOAD_ADDRESS@ \
$(LINK) \
$(none_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) \
@@ -46,7 +46,7 @@
none_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS = \
$(TOOL_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
none_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LINK = \
- $(top_builddir)/coregrind/link_tool_exe \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
@VALT_LOAD_ADDRESS@ \
$(LINK) \
$(none_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) \
|
|
From: Bart V. A. <bva...@ac...> - 2010-06-13 18:24:57
|
It took some time before I noticed, but the patch below triggers the
following warnings during compilation on PPC (make check):
[ ... ]
g++ -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../include -I../../coregrind -I../
../include -I../../VEX/pub -DVGA_ppc64=1 -DVGO_linux=1 -DVGP_ppc64_linux=1 -Win
line -Wall -Wshadow -g -m64 -g -O2 -MT valgrind_cpp_test.o -MD -MP -MF .deps/val
grind_cpp_test.Tpo -c -o valgrind_cpp_test.o valgrind_cpp_test.cpp
In file included from ../../include/pub_tool_vki.h:49,
from valgrind_cpp_test.cpp:14:
../../include/vki/vki-linux.h:2159: warning: division by zero
../../include/vki/vki-linux.h:2162: warning: division by zero
[ ... ]
Would it be OK to rewrite the _VKI_IOC_TYPECHECK() macro and to base
it on something similar to BUILD_BUG_ON() as present in the Linux
kernel ?
Bart.
On Sat, Jan 2, 2010 at 12:41 PM, <sv...@va...> wrote:
> Author: sewardj
> Date: 2010-01-02 10:41:46 +0000 (Sat, 02 Jan 2010)
> New Revision: 10990
>
> Log:
> Redo r10971 ("Made sure that C++ compilers do not complain about the
> _VKI_IOC_TYPECHECK() macro") in a way which is easier to understand.
> Also, add it for arm-linux.
>
>
>
> Modified:
> trunk/include/vki/vki-arm-linux.h
> trunk/include/vki/vki-ppc32-linux.h
> trunk/include/vki/vki-ppc64-linux.h
> trunk/include/vki/vki-x86-linux.h
>
>
> Modified: trunk/include/vki/vki-arm-linux.h
> ===================================================================
> --- trunk/include/vki/vki-arm-linux.h 2010-01-02 10:37:58 UTC (rev 10989)
> +++ trunk/include/vki/vki-arm-linux.h 2010-01-02 10:41:46 UTC (rev 10990)
> @@ -475,11 +475,11 @@
> ((size) << _VKI_IOC_SIZESHIFT))
>
> /* provoke compile error for invalid uses of size argument */
> -extern unsigned int __vki_invalid_size_argument_for_IOC;
> #define _VKI_IOC_TYPECHECK(t) \
> ((sizeof(t) == sizeof(t[1]) && \
> - sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) ? \
> - sizeof(t) : __vki_invalid_size_argument_for_IOC)
> + sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) \
> + ? sizeof(t) \
> + : /*cause gcc to complain about division by zero*/(1/0) )
>
> /* used to create numbers */
> #define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
>
> Modified: trunk/include/vki/vki-ppc32-linux.h
> ===================================================================
> --- trunk/include/vki/vki-ppc32-linux.h 2010-01-02 10:37:58 UTC (rev 10989)
> +++ trunk/include/vki/vki-ppc32-linux.h 2010-01-02 10:41:46 UTC (rev 10990)
> @@ -517,8 +517,10 @@
>
> /* provoke compile error for invalid uses of size argument */
> #define _VKI_IOC_TYPECHECK(t) \
> - (sizeof(t) / (sizeof(t) == sizeof(t[1]) && \
> - sizeof(t) < (1 << _VKI_IOC_SIZEBITS)))
> + ((sizeof(t) == sizeof(t[1]) && \
> + sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) \
> + ? sizeof(t) \
> + : /*cause gcc to complain about division by zero*/(1/0) )
>
> /* used to create numbers */
> #define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
>
> Modified: trunk/include/vki/vki-ppc64-linux.h
> ===================================================================
> --- trunk/include/vki/vki-ppc64-linux.h 2010-01-02 10:37:58 UTC (rev 10989)
> +++ trunk/include/vki/vki-ppc64-linux.h 2010-01-02 10:41:46 UTC (rev 10990)
> @@ -560,8 +560,10 @@
>
> /* provoke compile error for invalid uses of size argument */
> #define _VKI_IOC_TYPECHECK(t) \
> - (sizeof(t) / (sizeof(t) == sizeof(t[1]) && \
> - sizeof(t) < (1 << _VKI_IOC_SIZEBITS)))
> + ((sizeof(t) == sizeof(t[1]) && \
> + sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) \
> + ? sizeof(t) \
> + : /*cause gcc to complain about division by zero*/(1/0) )
>
> /* used to create numbers */
> #define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
>
> Modified: trunk/include/vki/vki-x86-linux.h
> ===================================================================
> --- trunk/include/vki/vki-x86-linux.h 2010-01-02 10:37:58 UTC (rev 10989)
> +++ trunk/include/vki/vki-x86-linux.h 2010-01-02 10:41:46 UTC (rev 10990)
> @@ -481,8 +481,10 @@
>
> /* provoke compile error for invalid uses of size argument */
> #define _VKI_IOC_TYPECHECK(t) \
> - (sizeof(t) / (sizeof(t) == sizeof(t[1]) && \
> - sizeof(t) < (1 << _VKI_IOC_SIZEBITS)))
> + ((sizeof(t) == sizeof(t[1]) && \
> + sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) \
> + ? sizeof(t) \
> + : /*cause gcc to complain about division by zero*/(1/0) )
>
> /* used to create numbers */
> #define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
|
|
From: Bart V. A. <bva...@ac...> - 2010-06-13 16:52:53
|
2010/6/13 Julian Seward <js...@ac...>: > > Attached is a diff against the svn trunk, which does the linking > with perl scripts. I think this will satisfy all requirements > (when complete; so far I only filled in the linux-specific parts): > > * supports cross-compilation, since it's a perl script > > * supports 64-bit arithmetic as needed for darwin > > * uses different perl scripts for linux and darwin, so as to > avoid introducing an unnecessary dependency on Math::BigInt into > linux builds. > > If anybody could check that cross-compilation still works using > this patch, that would be great. I propose to fill in the > Darwin specific parts, and then if there is no reported breakage > I'll commit it. Cross-compilation works again fine on my setup with this patch (host x86_64-linux, target powerpc-linux). Bart. |
|
From: <sv...@va...> - 2010-06-13 14:49:13
|
Author: bart
Date: 2010-06-13 15:49:04 +0100 (Sun, 13 Jun 2010)
New Revision: 11173
Log:
PowerPC: only compile Altivec instructions when the CPU supports these. Fixes bug #238745.
Modified:
trunk/coregrind/m_dispatch/dispatch-ppc32-linux.S
Modified: trunk/coregrind/m_dispatch/dispatch-ppc32-linux.S
===================================================================
--- trunk/coregrind/m_dispatch/dispatch-ppc32-linux.S 2010-06-13 13:46:24 UTC (rev 11172)
+++ trunk/coregrind/m_dispatch/dispatch-ppc32-linux.S 2010-06-13 14:49:04 UTC (rev 11173)
@@ -30,6 +30,7 @@
#if defined(VGP_ppc32_linux)
+#include "config.h"
#include "pub_core_basics_asm.h"
#include "pub_core_dispatch_asm.h"
#include "pub_core_transtab_asm.h"
@@ -131,6 +132,7 @@
cmplwi 5,0
beq LafterVMX1
+#ifdef HAS_ALTIVEC
/* VRSAVE save word : 32 bytes */
mfspr 5,256 /* vrsave reg is spr number 256 */
stw 5,244(1)
@@ -162,6 +164,8 @@
stvx 21,5,1
li 5,48
stvx 20,5,1
+#endif
+
LafterVMX1:
/* Save cr */
@@ -218,8 +222,11 @@
cmplwi 5,0
beq LafterVMX2
+#ifdef HAS_ALTIVEC
vspltisw 3,0x0 /* generate zero */
mtvscr 3
+#endif
+
LafterVMX2:
/* make a stack frame for the code we are calling */
@@ -415,6 +422,7 @@
cmplwi 11,0
beq LafterVMX8
+#ifdef HAS_ALTIVEC
/* Check VSCR[NJ] == 1 */
/* first generate 4x 0x00010000 */
vspltisw 4,0x1 /* 4x 0x00000001 */
@@ -426,6 +434,7 @@
vspltw 7,7,0x3 /* flags-word to all lanes */
vcmpequw. 8,6,7 /* CR[24] = 1 if v6 == v7 */
bt 24,invariant_violation /* branch if all_equal */
+#endif
LafterVMX8:
/* otherwise we're OK */
@@ -502,6 +511,7 @@
cmplwi 11,0
beq LafterVMX9
+#ifdef HAS_ALTIVEC
/* VRSAVE */
lwz 4,244(1)
mfspr 4,256 /* VRSAVE reg is spr number 256 */
@@ -531,6 +541,7 @@
lvx 21,4,1
li 4,48
lvx 20,4,1
+#endif
LafterVMX9:
/* reset lr & sp */
|
|
From: <sv...@va...> - 2010-06-13 13:46:33
|
Author: bart
Date: 2010-06-13 14:46:24 +0100 (Sun, 13 Jun 2010)
New Revision: 11172
Log:
Made the abort() function available on PPC too.
Modified:
trunk/coregrind/m_main.c
Modified: trunk/coregrind/m_main.c
===================================================================
--- trunk/coregrind/m_main.c 2010-06-10 15:01:02 UTC (rev 11171)
+++ trunk/coregrind/m_main.c 2010-06-13 13:46:24 UTC (rev 11172)
@@ -2668,6 +2668,13 @@
return VG_(memset)(s,c,n);
}
+/* BVA: abort() for those platforms that need it (PPC and ARM). */
+void abort(void);
+void abort(void){
+ VG_(printf)("Something called raise().\n");
+ vg_assert(0);
+}
+
/* EAZG: ARM's EABI will call floating point exception handlers in
libgcc which boil down to an abort or raise, that's usually defined
in libc. Instead, define them here. */
@@ -2678,12 +2685,6 @@
vg_assert(0);
}
-void abort(void);
-void abort(void){
- VG_(printf)("Something called raise().\n");
- vg_assert(0);
-}
-
void __aeabi_unwind_cpp_pr0(void);
void __aeabi_unwind_cpp_pr0(void){
VG_(printf)("Something called __aeabi_unwind_cpp_pr0()\n");
|
|
From: Julian S. <js...@ac...> - 2010-06-13 12:08:26
|
Attached is a diff against the svn trunk, which does the linking with perl scripts. I think this will satisfy all requirements (when complete; so far I only filled in the linux-specific parts): * supports cross-compilation, since it's a perl script * supports 64-bit arithmetic as needed for darwin * uses different perl scripts for linux and darwin, so as to avoid introducing an unnecessary dependency on Math::BigInt into linux builds. If anybody could check that cross-compilation still works using this patch, that would be great. I propose to fill in the Darwin specific parts, and then if there is no reported breakage I'll commit it. J On Friday, June 11, 2010, Julian Seward wrote: > Attached is a perl script from Mogens, which could be used as a > starting point. So, I'm not saying necessarily that perl is > the right solution -- only that I thought it might be easier and > more portable than a shell script, when it comes to doing the > 64-bit arithmetic stuff needed for Darwin on branches/MACOSX106. > If you can make it work with a shell script then fine, that's > just as good. > > J > > On Friday, June 11, 2010, Julian Seward wrote: > > On Thursday, June 10, 2010, Bart Van Assche wrote: > > > Hello, > > > > > > The patch below replaces link_tool_exe.c by a shell script such that > > > the Valgrind source code can again be cross-compiled. Are there any > > > comments about this approach ? > > > > Yes .. what it needs to do on Darwin on branches/MACOSX106 is > > more complicated. > > > > * filter the arguments provided, to identify the *.a and *.o ones > > > > * convert argv[1] into a 64-bit number, subtract 0x80000 from it, > > > > convert it back to text > > > > which is why I was proposing to do it as a perl script, as such > > things would be easier to do portably in perl (yes?) > > > > Perl is already a build prerequisite, so this wouldn't give any > > new dependencies. |