Skip to content

Commit 362cf92

Browse files
bachmbachm
bachm
authored and
bachm
committed
---
yaml --- r: 152507 b: refs/heads/try2 c: 78053f0 h: refs/heads/master i: 152505: ff53ac9 152503: bf98088 v: v3
1 parent f22ed09 commit 362cf92

File tree

159 files changed

+3688
-6912
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

159 files changed

+3688
-6912
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ refs/heads/snap-stage3: 78a7676898d9f80ab540c6df5d4c9ce35bb50463
55
refs/heads/try: 519addf6277dbafccbb4159db4b710c37eaa2ec5
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8-
refs/heads/try2: 63dcc9a4df50680686bee852e82a52fbc59b3c27
8+
refs/heads/try2: 78053f08253de974ea6e8a6ee8bb1f4c082daeab
99
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try2/configure

Lines changed: 54 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -416,6 +416,7 @@ opt mingw-cross 0 "cross-compile for win32 using mingw"
416416
opt clang 0 "prefer clang to gcc for building the runtime"
417417
opt ccache 0 "invoke gcc/clang via ccache to reuse object files between builds"
418418
opt local-rust 0 "use an installed rustc rather than downloading a snapshot"
419+
opt pax-flags 0 "apply PaX flags to rustc binaries (required for GRSecurity/PaX-patched kernels)"
419420
opt inject-std-version 1 "inject the current compiler version of libstd into programs"
420421
opt llvm-static-stdcpp 0 "statically link to libstdc++ for LLVM"
421422
opt rpath 1 "build rpaths into rustc itself"
@@ -517,6 +518,12 @@ then
517518
fi
518519
fi
519520

521+
if [ "$CFG_OSTYPE" = "unknown-linux-gnu" ]
522+
then
523+
probe CFG_PAXCTL paxctl /sbin/paxctl
524+
probe CFG_ZCAT zcat
525+
fi
526+
520527
step_msg "looking for target specific programs"
521528

522529
probe CFG_ADB adb
@@ -539,6 +546,51 @@ then
539546
fi
540547
fi
541548

549+
if [ "$CFG_OSTYPE" = "unknown-linux-gnu" ]
550+
then
551+
if [ ! -z "$CFG_ENABLE_PAX_FLAGS" -a -z "$CFG_PAXCTL" ]
552+
then
553+
err "enabled PaX markings but no paxctl binary found"
554+
fi
555+
556+
if [ -z "$CFG_DISABLE_PAX_FLAGS" ]
557+
then
558+
# GRSecurity/PaX detection. This can be very flaky.
559+
GRSEC_DETECTED=
560+
561+
# /dev/grsec only exists if CONFIG_GRKERNSEC_NO_RBAC is not set.
562+
# /proc/sys/kernel/grsecurity is not available if ÇONFIG_GRKERNSEC_SYSCTL is not set.
563+
if [ -e /dev/grsec -o -d /proc/sys/kernel/grsecurity ]
564+
then
565+
GRSEC_DETECTED=1
566+
# /proc/config.gz is normally only available to root, and only if CONFIG_IKCONFIG_PROC has been set.
567+
elif [ -r /proc/config.gz -a ! -z "$CFG_ZCAT" ]
568+
then
569+
if "$CFG_ZCAT" /proc/config.gz | grep --quiet "CONFIG_GRKERNSEC=y"
570+
then
571+
GRSEC_DETECTED=1
572+
fi
573+
# Flaky.
574+
elif grep --quiet grsec /proc/version
575+
then
576+
GRSEC_DETECTED=1
577+
fi
578+
579+
if [ ! -z "$GRSEC_DETECTED" ]
580+
then
581+
step_msg "GRSecurity: yes"
582+
if [ ! -z "$CFG_PAXCTL" ]
583+
then
584+
CFG_ENABLE_PAX_FLAGS=1
585+
else
586+
warn "GRSecurity kernel detected but no paxctl binary found: not setting CFG_ENABLE_PAX_FLAGS"
587+
fi
588+
else
589+
step_msg "GRSecurity: no"
590+
fi
591+
fi
592+
fi
593+
542594
BIN_SUF=
543595
if [ "$CFG_OSTYPE" = "pc-mingw32" ] || [ "$CFG_OSTYPE" = "w64-mingw32" ]
544596
then
@@ -890,33 +942,16 @@ then
890942
msg "git: submodule sync"
891943
"${CFG_GIT}" submodule sync
892944

893-
msg "git: submodule init"
894-
"${CFG_GIT}" submodule init
895-
896-
# Disable submodules that we're not using
897-
if [ ! -z "${CFG_LLVM_ROOT}" ]; then
898-
msg "git: submodule deinit src/llvm"
899-
"${CFG_GIT}" submodule deinit src/llvm
900-
fi
901-
if [ ! -z "${CFG_JEMALLOC_ROOT}" ]; then
902-
msg "git: submodule deinit src/jemalloc"
903-
"${CFG_GIT}" submodule deinit src/jemalloc
904-
fi
905-
if [ ! -z "${CFG_LIBUV_ROOT}" ]; then
906-
msg "git: submodule deinit src/libuv"
907-
"${CFG_GIT}" submodule deinit src/libuv
908-
fi
909-
910945
msg "git: submodule update"
911-
"${CFG_GIT}" submodule update
946+
"${CFG_GIT}" submodule update --init
912947
need_ok "git failed"
913948

914949
msg "git: submodule foreach sync"
915950
"${CFG_GIT}" submodule foreach --recursive 'if test -e .gitmodules; then git submodule sync; fi'
916951
need_ok "git failed"
917952

918953
msg "git: submodule foreach update"
919-
"${CFG_GIT}" submodule update --recursive
954+
"${CFG_GIT}" submodule update --init --recursive
920955
need_ok "git failed"
921956

922957
# NB: this is just for the sake of getting the submodule SHA1 values

branches/try2/mk/stage0.mk

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ ifdef CFG_ENABLE_LOCAL_RUST
1818
$(Q)$(S)src/etc/local_stage0.sh $(CFG_BUILD) $(CFG_LOCAL_RUST_ROOT) rustlib
1919
else
2020
$(Q)$(CFG_PYTHON) $(S)src/etc/get-snapshot.py $(CFG_BUILD) $(SNAPSHOT_FILE)
21+
ifdef CFG_ENABLE_PAX_FLAGS
22+
@$(call E, apply PaX flags: $@)
23+
@"$(CFG_PAXCTL)" -cm "$@"
24+
endif
2125
endif
2226
$(Q)touch $@
2327

branches/try2/src/libcollections/bitv.rs

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -842,7 +842,6 @@ impl cmp::PartialEq for BitvSet {
842842
}
843843

844844
impl fmt::Show for BitvSet {
845-
#[cfg(stage0)]
846845
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
847846
try!(write!(fmt, r"\{"));
848847
let mut first = true;
@@ -855,19 +854,6 @@ impl fmt::Show for BitvSet {
855854
}
856855
write!(fmt, r"\}")
857856
}
858-
#[cfg(not(stage0))]
859-
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
860-
try!(write!(fmt, "{{"));
861-
let mut first = true;
862-
for n in self.iter() {
863-
if !first {
864-
try!(write!(fmt, ", "));
865-
}
866-
try!(write!(fmt, "{}", n));
867-
first = false;
868-
}
869-
write!(fmt, "}}")
870-
}
871857
}
872858

873859
impl<S: hash::Writer> hash::Hash<S> for BitvSet {

branches/try2/src/libcollections/slice.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2034,6 +2034,16 @@ mod tests {
20342034
assert!(xs == [1,2,0,4,3,0,0,6,5,0]);
20352035
}
20362036

2037+
#[test]
2038+
fn test_get_mut() {
2039+
let mut v = [0,1,2];
2040+
assert_eq!(v.get_mut(3), None);
2041+
v.get_mut(1).map(|e| *e = 7);
2042+
assert_eq!(v[1], 7);
2043+
let mut x = 2;
2044+
assert_eq!(v.get_mut(2), Some(&mut x));
2045+
}
2046+
20372047
#[test]
20382048
fn test_mut_chunks() {
20392049
let mut v = [0u8, 1, 2, 3, 4, 5, 6];

branches/try2/src/libcollections/smallintmap.rs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,6 @@ impl<V:Clone> SmallIntMap<V> {
185185
}
186186

187187
impl<V: fmt::Show> fmt::Show for SmallIntMap<V> {
188-
#[cfg(stage0)]
189188
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
190189
try!(write!(f, r"\{"));
191190

@@ -196,17 +195,6 @@ impl<V: fmt::Show> fmt::Show for SmallIntMap<V> {
196195

197196
write!(f, r"\}")
198197
}
199-
#[cfg(not(stage0))]
200-
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
201-
try!(write!(f, "{{"));
202-
203-
for (i, (k, v)) in self.iter().enumerate() {
204-
if i != 0 { try!(write!(f, ", ")); }
205-
try!(write!(f, "{}: {}", k, *v));
206-
}
207-
208-
write!(f, "}}")
209-
}
210198
}
211199

212200
macro_rules! iterator {

branches/try2/src/libcollections/treemap.rs

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ impl<K: PartialOrd + Ord, V: PartialOrd> PartialOrd for TreeMap<K, V> {
7676
}
7777

7878
impl<K: Ord + Show, V: Show> Show for TreeMap<K, V> {
79-
#[cfg(stage0)]
8079
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8180
try!(write!(f, r"\{"));
8281

@@ -87,17 +86,6 @@ impl<K: Ord + Show, V: Show> Show for TreeMap<K, V> {
8786

8887
write!(f, r"\}")
8988
}
90-
#[cfg(not(stage0))]
91-
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
92-
try!(write!(f, "{{"));
93-
94-
for (i, (k, v)) in self.iter().enumerate() {
95-
if i != 0 { try!(write!(f, ", ")); }
96-
try!(write!(f, "{}: {}", *k, *v));
97-
}
98-
99-
write!(f, "}}")
100-
}
10189
}
10290

10391
impl<K: Ord, V> Collection for TreeMap<K, V> {
@@ -586,7 +574,6 @@ impl<T: PartialOrd + Ord> PartialOrd for TreeSet<T> {
586574
}
587575

588576
impl<T: Ord + Show> Show for TreeSet<T> {
589-
#[cfg(stage0)]
590577
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
591578
try!(write!(f, r"\{"));
592579

@@ -597,17 +584,6 @@ impl<T: Ord + Show> Show for TreeSet<T> {
597584

598585
write!(f, r"\}")
599586
}
600-
#[cfg(not(stage0))]
601-
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
602-
try!(write!(f, "{{"));
603-
604-
for (i, x) in self.iter().enumerate() {
605-
if i != 0 { try!(write!(f, ", ")); }
606-
try!(write!(f, "{}", *x));
607-
}
608-
609-
write!(f, "}}")
610-
}
611587
}
612588

613589
impl<T: Ord> Collection for TreeSet<T> {
@@ -761,7 +737,7 @@ pub struct IntersectionItems<'a, T> {
761737
b: Peekable<&'a T, SetItems<'a, T>>,
762738
}
763739

764-
/// Lazy iterator producing elements in the set union (in-order)
740+
/// Lazy iterator producing elements in the set intersection (in-order)
765741
pub struct UnionItems<'a, T> {
766742
a: Peekable<&'a T, SetItems<'a, T>>,
767743
b: Peekable<&'a T, SetItems<'a, T>>,

branches/try2/src/libcore/any.rs

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
1010

11-
//! Traits for dynamic typing of any `'static` type (through runtime reflection)
11+
//! Traits for dynamic typing of any type (through runtime reflection)
1212
//!
1313
//! This module implements the `Any` trait, which enables dynamic typing
14-
//! of any `'static` type through runtime reflection.
14+
//! of any type, through runtime reflection.
1515
//!
1616
//! `Any` itself can be used to get a `TypeId`, and has more features when used as a trait object.
1717
//! As `&Any` (a borrowed trait object), it has the `is` and `as_ref` methods, to test if the
@@ -32,10 +32,8 @@ pub enum Void { }
3232
// Any trait
3333
///////////////////////////////////////////////////////////////////////////////
3434

35-
/// The `Any` trait is implemented by all `'static` types, and can be used for dynamic typing
36-
///
37-
/// Every type with no non-`'static` references implements `Any`, so `Any` can be used as a trait
38-
/// object to emulate the effects dynamic typing.
35+
/// The `Any` trait is implemented by all types, and can be used as a trait object
36+
/// for dynamic typing
3937
pub trait Any {
4038
/// Get the `TypeId` of `self`
4139
fn get_type_id(&self) -> TypeId;
@@ -263,14 +261,6 @@ mod tests {
263261
let s = format!("{}", b);
264262
assert_eq!(s.as_slice(), "&Any");
265263
}
266-
267-
#[test]
268-
fn any_fixed_vec() {
269-
let test = [0u, ..8];
270-
let test = &test as &Any;
271-
assert!(test.is::<[uint, ..8]>());
272-
assert!(!test.is::<[uint, ..10]>());
273-
}
274264
}
275265

276266
#[cfg(test)]

0 commit comments

Comments
 (0)