Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 11 pull requests #82036

Closed
wants to merge 34 commits into from

Commits on Feb 4, 2021

  1. Increment self.index before calling `Iterator::self.a.__iterator_ge…

    …t_unchecked` in `Zip` `TrustedRandomAccess` specialization
    
    Otherwise if `Iterator::self.a.__iterator_get_unchecked` panics the
    index would not have been incremented yet and another call to
    `Iterator::next` would read from the same index again, which is not
    allowed according to the API contract of `TrustedRandomAccess` for
    `!Clone`.
    
    Fixes rust-lang#81740
    sdroege committed Feb 4, 2021
    Configuration menu
    Copy the full SHA
    86a4b27 View commit details
    Browse the repository at this point in the history

Commits on Feb 5, 2021

  1. Configuration menu
    Copy the full SHA
    f82315a View commit details
    Browse the repository at this point in the history

Commits on Feb 6, 2021

  1. Extend the comment of check_toolstate() to clarify that the tool wo…

    …n't be shipped on all targets
    hyd-dev committed Feb 6, 2021
    Configuration menu
    Copy the full SHA
    f87afe5 View commit details
    Browse the repository at this point in the history

Commits on Feb 7, 2021

  1. use rwlock for accessing ENV

    the8472 committed Feb 7, 2021
    Configuration menu
    Copy the full SHA
    55ca27f View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    406fd3a View commit details
    Browse the repository at this point in the history

Commits on Feb 8, 2021

  1. HWASan support

    Tri Vo committed Feb 8, 2021
    Configuration menu
    Copy the full SHA
    c7d9bff View commit details
    Browse the repository at this point in the history
  2. HWASan documentation

    Tri Vo committed Feb 8, 2021
    Configuration menu
    Copy the full SHA
    9c34c14 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    2200cf1 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    44abad5 View commit details
    Browse the repository at this point in the history

Commits on Feb 9, 2021

  1. Fix const generics in GAT

    BoxyUwU committed Feb 9, 2021
    Configuration menu
    Copy the full SHA
    1d9ac3c View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    4fc181d View commit details
    Browse the repository at this point in the history

Commits on Feb 10, 2021

  1. Comments :3

    BoxyUwU committed Feb 10, 2021
    Configuration menu
    Copy the full SHA
    2c4337a View commit details
    Browse the repository at this point in the history
  2. Fix comment smol mistakes

    BoxyUwU committed Feb 10, 2021
    Configuration menu
    Copy the full SHA
    0422745 View commit details
    Browse the repository at this point in the history
  3. comma...

    BoxyUwU committed Feb 10, 2021
    Configuration menu
    Copy the full SHA
    0ffa2da View commit details
    Browse the repository at this point in the history
  4. Allow casting mut array ref to mut ptr

    We now allow two new casts:
    
    - mut array reference to mut ptr. Example:
    
          let mut x: [usize; 2] = [0, 0];
          let p = &mut x as *mut usize;
    
      We allow casting const array references to const pointers so not
      allowing mut references to mut pointers was inconsistent.
    
    - mut array reference to const ptr. Example:
    
          let mut x: [usize; 2] = [0, 0];
          let p = &mut x as *const usize;
    
      This was similarly inconsistent as we allow casting mut references to
      const pointers.
    
    Existing test 'vector-cast-weirdness' updated to test both cases.
    
    Fixes rust-lang#24151
    osa1 committed Feb 10, 2021
    Configuration menu
    Copy the full SHA
    d64b749 View commit details
    Browse the repository at this point in the history
  5. rewrite the comments

    BoxyUwU committed Feb 10, 2021
    Configuration menu
    Copy the full SHA
    7ca96ed View commit details
    Browse the repository at this point in the history

Commits on Feb 11, 2021

  1. Ensures make tests run under /bin/dash, like CI, and fixes a Makefile

    Updates `tools.mk` to explicitly require `SHELL := /bin/dash`, since CI
    uses `dash` but other environments (including developer local machines)
    may default to `bash`.
    
    Replaces bash-specific shell command in one Makefile with a
    dash-compatible alternative, and re-enables the affected Makefile test.
    
    Removes apparently redundant definition of `UNAME`.
    richkadel committed Feb 11, 2021
    Configuration menu
    Copy the full SHA
    01f5a2a View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    625803d View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    b211acf View commit details
    Browse the repository at this point in the history
  4. Fix injected errors when running doctests on a crate named after a ke…

    …yword
    
    Unfortunately, this can't currently be tested. The problem is that we
    need the file to be compiled first to then be used as dependency, which
    cannot be done currently unfortunately in the rustdoc test suites.
    Example:
    
    ```rust
    // name this file "foo.rs"
    
    /// ```
    /// let x = foo::foo();
    /// ```
    pub fn foo() {}
    ```
    
    If you run `rustdoc --test foo.rs`, you'll get:
    
    ```
    running 1 test
    test foo.rs - foo (line 1) ... FAILED
    
    failures:
    
    ---- foo.rs - foo (line 1) stdout ----
    error[E0463]: can't find crate for `foo`
     --> foo.rs:0:1
      |
    2 | extern crate foo;
      | ^^^^^^^^^^^^^^^^^ can't find crate
    ```
    
    If a test were possible, it would look something like
    
     ````rust
     #![crate_name = "mod"]
     #![crate_type = "lib"]
     //! ```
     //! // NOTE: requires that the literal string 'mod' appears in the doctest for
     //! // the bug to appear
     //! assert_eq!(1, 1);
     //! ```
     ````
    jyn514 committed Feb 11, 2021
    Configuration menu
    Copy the full SHA
    02ffe9e View commit details
    Browse the repository at this point in the history

Commits on Feb 12, 2021

  1. Configuration menu
    Copy the full SHA
    fda71d6 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    f546633 View commit details
    Browse the repository at this point in the history
  3. Use Iterator::all instead of open-coding it

    Shorter code and by initializing to the final value directly, the variable
    doesn't need to be mut.
    LingMan committed Feb 12, 2021
    Configuration menu
    Copy the full SHA
    fde59a8 View commit details
    Browse the repository at this point in the history
  4. Rollup merge of rust-lang#79775 - jyn514:doctest, r=GuillaumeGomez

    Fix injected errors when running doctests on a crate named after a keyword
    
    Closes rust-lang#79771
    Dylan-DPC committed Feb 12, 2021
    Configuration menu
    Copy the full SHA
    c2ac7cf View commit details
    Browse the repository at this point in the history
  5. Rollup merge of rust-lang#81479 - osa1:issue24151, r=lcnr

    Allow casting mut array ref to mut ptr
    
    Allow casting mut array ref to mut ptr
    
    We now allow two new casts:
    
    - mut array reference to mut ptr. Example:
    
          let mut x: [usize; 2] = [0, 0];
          let p = &mut x as *mut usize;
    
      We allow casting const array references to const pointers so not
      allowing mut references to mut pointers was inconsistent.
    
    - mut array reference to const ptr. Example:
    
          let mut x: [usize; 2] = [0, 0];
          let p = &mut x as *const usize;
    
      This was similarly inconsistent as we allow casting mut references to
      const pointers.
    
    Existing test 'vector-cast-weirdness' updated to test both cases.
    
    Fixes rust-lang#24151
    Dylan-DPC committed Feb 12, 2021
    Configuration menu
    Copy the full SHA
    7946b80 View commit details
    Browse the repository at this point in the history
  6. Rollup merge of rust-lang#81506 - vo4:hwasan, r=nagisa

    HWAddressSanitizer support
    
    #  Motivation
    Compared to regular ASan, HWASan has a [smaller overhead](https://source.android.com/devices/tech/debug/hwasan). The difference in practice is that HWASan'ed code is more usable, e.g. Android device compiled with HWASan can be used as a daily driver.
    
    # Example
    ```
    fn main() {
        let xs = vec![0, 1, 2, 3];
        let _y = unsafe { *xs.as_ptr().offset(4) };
    }
    ```
    ```
    ==223==ERROR: HWAddressSanitizer: tag-mismatch on address 0xefdeffff0050 at pc 0xaaaad00b3468
    READ of size 4 at 0xefdeffff0050 tags: e5/00 (ptr/mem) in thread T0
        #0 0xaaaad00b3464  (/root/main+0x53464)
        rust-lang#1 0xaaaad00b39b4  (/root/main+0x539b4)
        rust-lang#2 0xaaaad00b3dd0  (/root/main+0x53dd0)
        rust-lang#3 0xaaaad00b61dc  (/root/main+0x561dc)
        rust-lang#4 0xaaaad00c0574  (/root/main+0x60574)
        rust-lang#5 0xaaaad00b6290  (/root/main+0x56290)
        rust-lang#6 0xaaaad00b6170  (/root/main+0x56170)
        rust-lang#7 0xaaaad00b3578  (/root/main+0x53578)
        rust-lang#8 0xffff81345e70  (/lib64/libc.so.6+0x20e70)
        rust-lang#9 0xaaaad0096310  (/root/main+0x36310)
    
    [0xefdeffff0040,0xefdeffff0060) is a small allocated heap chunk; size: 32 offset: 16
    0xefdeffff0050 is located 0 bytes to the right of 16-byte region [0xefdeffff0040,0xefdeffff0050)
    allocated here:
        #0 0xaaaad009bcdc  (/root/main+0x3bcdc)
        rust-lang#1 0xaaaad00b1eb0  (/root/main+0x51eb0)
        rust-lang#2 0xaaaad00b20d4  (/root/main+0x520d4)
        rust-lang#3 0xaaaad00b2800  (/root/main+0x52800)
        rust-lang#4 0xaaaad00b1cf4  (/root/main+0x51cf4)
        rust-lang#5 0xaaaad00b33d4  (/root/main+0x533d4)
        rust-lang#6 0xaaaad00b39b4  (/root/main+0x539b4)
        rust-lang#7 0xaaaad00b61dc  (/root/main+0x561dc)
        rust-lang#8 0xaaaad00b3578  (/root/main+0x53578)
        rust-lang#9 0xaaaad0096310  (/root/main+0x36310)
    
    Thread: T0 0xeffe00002000 stack: [0xffffc0590000,0xffffc0d90000) sz: 8388608 tls: [0xffff81521020,0xffff815217d0)
    Memory tags around the buggy address (one tag corresponds to 16 bytes):
      0xfefcefffef80: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
      0xfefcefffef90: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
      0xfefcefffefa0: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
      0xfefcefffefb0: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
      0xfefcefffefc0: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
      0xfefcefffefd0: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
      0xfefcefffefe0: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
      0xfefcefffeff0: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
    =>0xfefceffff000: a2  a2  05  00  e5 [00] 00  00  00  00  00  00  00  00  00  00
      0xfefceffff010: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
      0xfefceffff020: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
      0xfefceffff030: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
      0xfefceffff040: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
      0xfefceffff050: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
      0xfefceffff060: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
      0xfefceffff070: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
      0xfefceffff080: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
    Tags for short granules around the buggy address (one tag corresponds to 16 bytes):
      0xfefcefffeff0: ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..
    =>0xfefceffff000: ..  ..  c5  ..  .. [..] ..  ..  ..  ..  ..  ..  ..  ..  ..  ..
      0xfefceffff010: ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..
    See https://clang.llvm.org/docs/HardwareAssistedAddressSanitizerDesign.html#short-granules for a description of short granule tags
    Registers where the failure occurred (pc 0xaaaad00b3468):
        x0  e500efdeffff0050  x1  0000000000000004  x2  0000ffffc0d8f5a0  x3  0200efff00000000
        x4  0000ffffc0d8f4c0  x5  000000000000004f  x6  00000ffffc0d8f36  x7  0000efff00000000
        x8  e500efdeffff0050  x9  0200efff00000000  x10 0000000000000000  x11 0200efff00000000
        x12 0200effe000006b0  x13 0200effe000006b0  x14 0000000000000008  x15 00000000c00000cf
        x16 0000aaaad00a0afc  x17 0000000000000003  x18 0000000000000001  x19 0000ffffc0d8f718
        x20 ba00ffffc0d8f7a0  x21 0000aaaad00962e0  x22 0000000000000000  x23 0000000000000000
        x24 0000000000000000  x25 0000000000000000  x26 0000000000000000  x27 0000000000000000
        x28 0000000000000000  x29 0000ffffc0d8f650  x30 0000aaaad00b3468
    ```
    
    # Comments/Caveats
    * HWASan is only supported on arm64.
    * I'm not sure if I should add a feature gate or piggyback on the existing one for sanitizers.
    * HWASan requires `-C target-feature=+tagged-globals`. That flag should probably be set transparently to the user. Not sure how to go about that.
    
    # TODO
    * Need more tests.
    * Update documentation.
    * Fix symbolization.
    * Integrate with CI
    Dylan-DPC committed Feb 12, 2021
    Configuration menu
    Copy the full SHA
    a1b0549 View commit details
    Browse the repository at this point in the history
  7. Rollup merge of rust-lang#81666 - hyd-dev:miri-windows-test-fail, r=M…

    …ark-Simulacrum
    
    Don't release Miri if its tests only failed on Windows
    
    Extends rust-lang#66053 to Windows, so the released Miri won't be broken if its tests only fail on Windows.
    
    Relevant Zulip thread: https://rust-lang.zulipchat.com/#narrow/stream/269128-miri/topic/Miri.20is.20still.20available.20in.20rustup.20today.3F
    Dylan-DPC committed Feb 12, 2021
    Configuration menu
    Copy the full SHA
    abafbf3 View commit details
    Browse the repository at this point in the history
  8. Rollup merge of rust-lang#81734 - richkadel:fixfordash, r=pnkfelix

    Ensures `make` tests run under /bin/dash (if available), like CI, and fixes a Makefile
    
    Note: This cherrypicks rust-lang#81688 (`@pnkfelix)`
    
    Updates `tools.mk` to explicitly require `SHELL := /bin/dash`, since CI uses `dash` but other environments (including developer local machines) may default to `bash`.
    
    Replaces bash-specific shell command in one Makefile with a dash-compatible alternative, and re-enables the affected Makefile test.
    
    Removes apparently redundant definition of `UNAME`.
    
    Also see: [zulip discussion thread](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/how.20to.20run.2Fbless.20src.2Ftest.2Frun-make-fulldeps.2Fcoverage.20.3F)
    
    r? `@pnkfelix`
    
    FYI: `@wesleywiser` `@tmandry`
    Dylan-DPC committed Feb 12, 2021
    Configuration menu
    Copy the full SHA
    b92d132 View commit details
    Browse the repository at this point in the history
  9. Rollup merge of rust-lang#81741 - sdroege:zip-trusted-random-access-s…

    …pecialization-panic-safety, r=KodrAus
    
    Increment `self.index` before calling `Iterator::self.a.__iterator_ge…
    
    …`t_unchecked` in `Zip` `TrustedRandomAccess` specialization
    
    Otherwise if `Iterator::self.a.__iterator_get_unchecked` panics the
    index would not have been incremented yet and another call to
    `Iterator::next` would read from the same index again, which is not
    allowed according to the API contract of `TrustedRandomAccess` for
    `!Clone`.
    
    Fixes rust-lang#81740
    Dylan-DPC committed Feb 12, 2021
    Configuration menu
    Copy the full SHA
    a79a1da View commit details
    Browse the repository at this point in the history
  10. Rollup merge of rust-lang#81850 - the8472:env-rwlock, r=m-ou-se

    use RWlock when accessing os::env
    
    Multiple threads modifying the current process environment is fairly uncommon. Optimize for the more common read case.
    
    r? ```@m-ou-se```
    Dylan-DPC committed Feb 12, 2021
    Configuration menu
    Copy the full SHA
    8683bff View commit details
    Browse the repository at this point in the history
  11. Rollup merge of rust-lang#81911 - BoxyUwU:constgenericgaticefix, r=ni…

    …komatsakis
    
    GAT/const_generics: Allow with_opt_const_param to return GAT param def_id
    
    Fixes rust-lang#75415
    Fixes rust-lang#79666
    cc ``@lcnr``
    
    I've absolutely no idea who to r?  for this...
    Dylan-DPC committed Feb 12, 2021
    Configuration menu
    Copy the full SHA
    172adb4 View commit details
    Browse the repository at this point in the history
  12. Rollup merge of rust-lang#82022 - LingMan:single_char, r=jonas-schievink

    Push a `char` instead of a `str` with len one into a String
    
    `@rustbot` modify labels +C-cleanup +T-compiler
    Dylan-DPC committed Feb 12, 2021
    Configuration menu
    Copy the full SHA
    a88ae80 View commit details
    Browse the repository at this point in the history
  13. Rollup merge of rust-lang#82023 - MikailBag:boxed-docs-unallow, r=jyn514

    Remove unnecessary lint allow attrs on example
    
    It seems they are not needed anymore.
    Dylan-DPC committed Feb 12, 2021
    Configuration menu
    Copy the full SHA
    3db4afd View commit details
    Browse the repository at this point in the history
  14. Rollup merge of rust-lang#82030 - LingMan:init_directly, r=varkor

    Use `Iterator::all` instead of open-coding it
    
    Shorter code and by initializing to the final value directly, the variable
    doesn't need to be mut.
    Dylan-DPC committed Feb 12, 2021
    Configuration menu
    Copy the full SHA
    3c50257 View commit details
    Browse the repository at this point in the history