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

Fix unset e_flags in ELF files generated for AVR targets #106619

Merged
merged 1 commit into from
Jun 30, 2023

Conversation

agausmann
Copy link
Contributor

@agausmann agausmann commented Jan 9, 2023

Closes #106576

Sort-of blocked by gimli-rs/object#500 (merged)

I'm not sure whether the list of AVR CPU names is okay here. Maybe it could be moved out-of-line to improve the readability of the function.

@rustbot
Copy link
Collaborator

rustbot commented Jan 9, 2023

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @estebank (or someone else) soon.

Please see the contribution instructions for more information.

@rustbot rustbot added T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Jan 9, 2023
@agausmann agausmann changed the title create_object_file: Set e_flags for AVR architecture based on target CPU rustc_codegen_ssa: Set e_flags for AVR architecture based on target CPU Jan 9, 2023
@rust-log-analyzer

This comment has been minimized.

@@ -172,6 +172,330 @@ pub(crate) fn create_object_file(sess: &Session) -> Option<write::Object<'static
let e_flags = elf::EF_RISCV_RVC | elf::EF_RISCV_FLOAT_ABI_DOUBLE;
e_flags
}
Architecture::Avr => {
// Adapted from llvm-project/llvm/lib/target/AVR/AVRDevices.td
match sess.target.options.cpu.as_ref() {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like we only support atmega328 at the moment. For AVR we pass a hard-coded linker flag (-mmcu=atmega328 for avr-unknown-gnu-atmega328) containing which AVR variant is used to the linker. I can imagine that it going out of sync with -Ctarget-cpu is a really bad idea. Instead it did probably need a separate target spec for each cpu. Especially if you can't mix a standard library compiled for one variant with one compiled for another variant. Maybe this EF_AVR_MACH_* constant could be specified to the target spec instead of using a giant match? Or maybe not? By the way, should we forbid -Ctarget-cpu for AVR?

Copy link
Contributor Author

@agausmann agausmann Jan 9, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like we only support atmega328 at the moment

Instead it did probably need a separate target spec for each cpu

Only atmega328 is in mainline rustc, but the Rust-AVR community supports many more using custom target specs.

For AVR we pass a hard-coded linker flag

And we add an -mmcu=* linker flag in our custom target specs too.

Maybe this EF_AVR_MACH_* constant could be specified to the target spec instead of using a giant match?

Both AVR-GCC and LLVM accept the CPU name as a single flag (e.g. -mmcu) and use that to look up values like EF_AVR_MACH_* internally (e.g. with the AVRDevices.td table that I mentioned in the comment).

That being said, being able to specify the ISA revision in the target spec is also a good idea. It would make maintenance in rustc a little easier, as rustc would only have to maintain the list of ISAs and not every CPU ever released.

(CC @Rahix - would it be acceptable to specify the ISA alongside the CPU in the target specs?)

should we forbid -Ctarget-cpu for AVR?

I do not see a reason for doing that.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do not see a reason for doing that.

Does using say -Ctarget-cpu=avr1 for one crate and -Ctarget-cpu=avrtiny for another crate work? If not, they have to be treated as separate targets without an overlapping set of allowed values for -Ctarget-cpu. The way that rustc checks for compatibility is by checking that the target name is identical. It assumes that linking crates with different -Ctarget-cpu values works fine and then runs on any cpu implementing the union of whatever features these -Ctarget-cpu values imply.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For AVR specifically, the main usecase I can think of is picking a common-denominator ISA for building a "portable" library. I don't know whether that's actually useful or not. Probably not, since we currently specify each AVR CPU as its own target anyway.

And sure, if you misuse that, you may end up with a broken executable that doesn't work on your platform. That's true for any target.

However, I don't think it would be productive to add more code to forbid it. It's not like it's a "footgun" that a developer would regularly encounter and accidentally set incorrectly without realizing.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was worried about say AVR2 cpu's not being able to run AVR1 code. That AVR1 cpu's can't run AVR2 code is obvious.

It's not like it's a "footgun" that a developer would regularly encounter and accidentally set incorrectly without realizing.

You might not realize that the standard library is compiled for an incompatible cpu even if you set -Ctarget-cpu for your own crates.

In any case I guess it is fine to leave it as is.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(CC @Rahix - would it be acceptable to specify the ISA alongside the CPU in the target specs?)

I certainly wouldn't mind at all. However both gcc and llvm also seem to maintain the list of MCUs so I think it is just as reasonable to do the same in rustc.

Cargo.toml Outdated
@@ -115,5 +115,7 @@ rustc-std-workspace-core = { path = 'library/rustc-std-workspace-core' }
rustc-std-workspace-alloc = { path = 'library/rustc-std-workspace-alloc' }
rustc-std-workspace-std = { path = 'library/rustc-std-workspace-std' }

object = { git = "https://github.com/agausmann/object.git", branch = "0.29.0-avr-flags" }
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems your changes were released as object version 0.30.2.

Copy link
Contributor Author

@agausmann agausmann Jan 24, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, and rustc has been updated to object 0.30; rebasing this is on my to-do list 👍

@agausmann
Copy link
Contributor Author

agausmann commented Jan 29, 2023

Maybe it could be moved out-of-line to improve the readability of the function.

Ultimately it's up to the reviewer, but personally I think it's a good idea to make this match a separate function.

@petrochenkov
Copy link
Contributor

Maybe it would make sense to put it somewhere in rustc_target.

Yeah, that would make sense.
To compiler\rustc_target\src\spec\avr_gnu_base.rs specifically (with a reexport from some externally visible place).

@agausmann
Copy link
Contributor Author

@petrochenkov I considered rustc_target but this mapping uses constants from the object crate, so rustc_target would also have to depend on object.

@workingjubilee
Copy link
Member

Is that actually a problem? It has several external dependencies already.

@wesleywiser
Copy link
Member

r? rust-lang/compiler

@rustbot rustbot assigned nagisa and unassigned estebank Feb 16, 2023
@agausmann
Copy link
Contributor Author

agausmann commented Feb 16, 2023

Is that actually a problem?

Probably not, just could shift the dependency graph slightly. I figured dependency changes were worth pointing out.

@workingjubilee
Copy link
Member

object is already depended-on by cg_clif and cg_llvm so while it will move the dependence up the chain, to rustc_target, that crate should already have been built in-parallel in order to make it available to the codegen backend.

"atmega3209" => elf::EF_AVR_ARCH_XMEGA3,
"atmega4808" => elf::EF_AVR_ARCH_XMEGA3,
"atmega4809" => elf::EF_AVR_ARCH_XMEGA3,
_ => 0,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this a reasonable fall-back value for an unknown CPU? That is, will the tooling continue working with the objects if this field stays zero?

If not, there are two alternatives to consider here – a compiler error or falling back to a common denominator that is (almost?) guaranteed to work whatever the CPU is specified.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this a reasonable fall-back value for an unknown CPU?

I believe zero is the value used for "generic" or "unspecified" in this case. It's also the value that e_flags has on AVR without this patch.

For example, in the error message in #106576 (avr architecture of input file `/tmp/rustcmivxhx/symbols.o' is incompatible with avr:103 output) , the 103 is the expected e_flags value. If the value is zero, then the linker just prints avr, like at the beginning of the error message, implying that it's "generic" AVR.

Another example of the same error, but different values: avr:51 architecture of input file `main.o' is incompatible with avr output (source)

@nagisa
Copy link
Member

nagisa commented Feb 26, 2023

I think adding a rustc_target ← object dependency edge makes a fair bit of sense: object is a pretty lean crate and it does provide some very target-specific connstants that other targets might want to use but wouldn’t if the dependency wasn't already available.

@nagisa nagisa added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 26, 2023
@agausmann
Copy link
Contributor Author

agausmann commented Mar 9, 2023

It's not clear where this should go in rustc_target. The spec::avr_gnu_base module is not public, so that would either have to be made public, or the function would have to be reexported publicly, if it is in there.

Oh, I see that has already been mentioned.

@bors
Copy link
Contributor

bors commented Apr 12, 2023

☔ The latest upstream changes (presumably #110214) made this pull request unmergeable. Please resolve the merge conflicts.

@Dylan-DPC
Copy link
Member

@agausmann any updates?

@apiraino
Copy link
Contributor

Switching PR state to waiting on review. @agausmann you can also switch the review assignment with @rustbot ready when you feel it's ready for another round of review, thanks.

@rustbot ready

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Jun 14, 2023
@agausmann
Copy link
Contributor Author

Ah ok, thanks for the help @apiraino

@nagisa
Copy link
Member

nagisa commented Jun 29, 2023

I haven’t reviewed the list of MCU-specific options too carefully, but the rest seems good to me.

@bors r+

@bors
Copy link
Contributor

bors commented Jun 29, 2023

📌 Commit a7158ec has been approved by nagisa

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jun 29, 2023
compiler-errors added a commit to compiler-errors/rust that referenced this pull request Jun 30, 2023
Fix unset e_flags in ELF files generated for AVR targets

Closes rust-lang#106576

~~Sort-of blocked by gimli-rs/object#500~~ (merged)

I'm not sure whether the list of AVR CPU names is okay here. Maybe it could be moved out-of-line to improve the readability of the function.
@bors
Copy link
Contributor

bors commented Jun 30, 2023

⌛ Testing commit a7158ec with merge 94a19fef75b3b032c6570ad529081106dbb18f07...

@rust-log-analyzer
Copy link
Collaborator

The job dist-mips64-linux failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot)
   Compiling git2-curl v0.18.0
[RUSTC-TIMING] git2_curl test:false 0.901
[RUSTC-TIMING] git2 test:false 11.830
[RUSTC-TIMING] gix test:false 17.153
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-95f8fcf328bf7736.so(+0xd47333)[0x7f01906be333]
/lib/x86_64-linux-gnu/libc.so.6(+0x42520)[0x7f018f602520]
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-95f8fcf328bf7736.so(+0x31963df)[0x7f0192b0d3df]
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-95f8fcf328bf7736.so(+0x1d2c046)[0x7f01916a3046]
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-95f8fcf328bf7736.so(+0x1be1b60)[0x7f0191558b60]
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-95f8fcf328bf7736.so(+0x1c711a0)[0x7f01915e81a0]
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-95f8fcf328bf7736.so(+0x1d68826)[0x7f01916df826]
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-95f8fcf328bf7736.so(+0x1d6b36a)[0x7f01916e236a]
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-95f8fcf328bf7736.so(+0x1d6d7a6)[0x7f01916e47a6]
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-95f8fcf328bf7736.so(+0x388f83f)[0x7f019320683f]
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-95f8fcf328bf7736.so(+0x1fb0044)[0x7f0191927044]
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-95f8fcf328bf7736.so(+0x2f93810)[0x7f019290a810]
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-95f8fcf328bf7736.so(+0x2f93984)[0x7f019290a984]
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-95f8fcf328bf7736.so(+0x2f94384)[0x7f019290b384]
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-95f8fcf328bf7736.so(+0xfe8338)[0x7f019095f338]
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-95f8fcf328bf7736.so(+0xfad621)[0x7f0190924621]
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-95f8fcf328bf7736.so(+0xfb14c4)[0x7f01909284c4]
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-95f8fcf328bf7736.so(+0xecbc86)[0x7f0190842c86]
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-95f8fcf328bf7736.so(+0xf7609e)[0x7f01908ed09e]
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-95f8fcf328bf7736.so(+0xf50d12)[0x7f01908c7d12]
/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libstd-025e001bd1fa95df.so(rust_metadata_std_ae54db559e22a89e+0xb3225)[0x7f018f89e225]
/lib/x86_64-linux-gnu/libc.so.6(+0x94b43)[0x7f018f654b43]
/lib/x86_64-linux-gnu/libc.so.6(+0x126a00)[0x7f018f6e6a00]
[RUSTC-TIMING] cargo test:false 68.627
rustc exited with signal: 11 (SIGSEGV) (core dumped)

Caused by:
Caused by:
  process didn't exit successfully: `/checkout/obj/build/bootstrap/debug/rustc --crate-name cargo --edition=2021 src/cargo/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C embed-bitcode=no -C debuginfo=0 --cfg 'feature="all-static"' --cfg 'feature="openssl"' --cfg 'feature="vendored-openssl"' -Zunstable-options --check-cfg 'values(feature, "all-static", "openssl", "pretty-env-logger", "pretty_env_logger", "vendored-libgit2", "vendored-openssl")' --check-cfg 'names()' --check-cfg 'values()' -C metadata=4f58539da6b6d5a6 -C extra-filename=-4f58539da6b6d5a6 --out-dir /checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps --target mips64-unknown-linux-gnuabi64 -C linker=mips64-unknown-linux-gnu-gcc -L dependency=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps -L dependency=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/release/deps --extern anyhow=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libanyhow-ca52a3b58ef8e770.rmeta --extern base64=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libbase64-4972e633235082f6.rmeta --extern bytesize=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libbytesize-7b0fe47b0abeffcf.rmeta --extern cargo_platform=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libcargo_platform-2758e918a82d52a1.rmeta --extern cargo_util=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libcargo_util-5113280f627a9feb.rmeta --extern clap=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libclap-462530d29a2be036.rmeta --extern crates_io=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libcrates_io-67163a6571f1bd27.rmeta --extern curl=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libcurl-f0daef13ef4518c5.rmeta --extern curl_sys=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libcurl_sys-1d1655055238430d.rmeta --extern env_logger=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libenv_logger-6ae5e7a02895f550.rmeta --extern filetime=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libfiletime-762b9099dc65c74d.rmeta --extern flate2=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libflate2-a9da85322ee08cbb.rmeta --extern git2=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libgit2-e2028b47dbf63492.rmeta --extern git2_curl=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libgit2_curl-b788b539eb1ab446.rmeta --extern gix=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libgix-beb49b09bb52a766.rmeta --extern gix_features_for_configuration_only=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libgix_features-7d487b338a46640d.rmeta --extern glob=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libglob-6fa49347ea036911.rmeta --extern hex=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libhex-a323e6791f0cb75b.rmeta --extern hmac=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libhmac-e62a85a67b4a3d00.rmeta --extern home=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libhome-8941a6f6a5c7318c.rmeta --extern http_auth=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libhttp_auth-5e0c781068101e9f.rmeta --extern humantime=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libhumantime-3aa0fad50caad2ab.rmeta --extern ignore=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libignore-8f8056e8b1f1ca28.rmeta --extern im_rc=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libim_rc-1433f1d5ee129ad4.rmeta --extern indexmap=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libindexmap-09692627a802a7e2.rmeta --extern itertools=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libitertools-d908bbadcd525655.rmeta --extern jobserver=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libjobserver-4bd5290c8d787e8b.rmeta --extern lazycell=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/liblazycell-96512583cc2512ff.rmeta --extern libc=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/liblibc-6abe107547b48408.rmeta --extern libgit2_sys=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/liblibgit2_sys-82e371202073aff7.rmeta --extern log=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/liblog-3a684b866f40c67b.rmeta --extern memchr=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libmemchr-4dd8d37b68029955.rmeta --extern opener=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libopener-78d530fc43ce8c9b.rmeta --extern openssl=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libopenssl-08e7520ffa14a6b8.rmeta --extern os_info=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libos_info-ccfb19465f64848c.rmeta --extern pasetors=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libpasetors-374737a2360eacf4.rmeta --extern pathdiff=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libpathdiff-77ca474fe6ad3f74.rmeta --extern pulldown_cmark=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libpulldown_cmark-e9f6104c7737852b.rmeta --extern rand=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/librand-cc90d78df1885a87.rmeta --extern rustfix=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/librustfix-4e8a52beb3be53f2.rmeta --extern semver=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libsemver-3ffc983edc395607.rmeta --extern serde=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libserde-8bc8e62346026196.rmeta --extern serde_value=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libserde_value-76e3beb4208b66e4.rmeta --extern serde_ignored=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libserde_ignored-7d62b658d50e6a72.rmeta --extern serde_json=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libserde_json-4b2f68a5f177a83c.rmeta --extern sha1=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libsha1-aef462ab3a120079.rmeta --extern shell_escape=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libshell_escape-028f5ce049ada9ad.rmeta --extern strip_ansi_escapes=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libstrip_ansi_escapes-0bb6bae58ba85b61.rmeta --extern syn=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libsyn-0fde6f762147fdea.rmeta --extern tar=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libtar-da72b20cf5e9692a.rmeta --extern tempfile=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libtempfile-0c0f86afd76dd8cb.rmeta --extern termcolor=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libtermcolor-9cee8c8a84b42576.rmeta --extern time=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libtime-f279bcab4ca68d75.rmeta --extern toml=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libtoml-d93fcc12151aaf91.rmeta --extern toml_edit=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libtoml_edit-96821f619ce97fb6.rmeta --extern unicode_width=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libunicode_width-da5fe0f99c19b9e9.rmeta --extern unicode_xid=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libunicode_xid-fcd6dac0701ecb1a.rmeta --extern url=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/liburl-1ff74ad2e5a593ff.rmeta --extern walkdir=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libwalkdir-7f2a71cccf6dbd1e.rmeta --cfg=windows_raw_dylib -Csymbol-mangling-version=v0 -Zunstable-options '--check-cfg=values(bootstrap)' '--check-cfg=values(parallel_compiler)' '--check-cfg=values(no_btreemap_remove_entry)' '--check-cfg=values(crossbeam_loom)' '--check-cfg=values(span_locations)' '--check-cfg=values(rustix_use_libc)' '--check-cfg=values(emulate_second_only_system)' '--check-cfg=values(windows_raw_dylib)' -Zdual-proc-macros -Zmacro-backtrace -Clink-args=-Wl,-z,origin '-Clink-args=-Wl,-rpath,$ORIGIN/../lib' -Csplit-debuginfo=off -Z binary-dep-depinfo -L native=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/build/curl-sys-674cd75023884ac0/out/build -L native=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/build/libnghttp2-sys-370155c484f9f767/out/i/lib -L native=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/build/libz-sys-63ec8ffcb4c83643/out/lib -L native=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/build/libz-sys-63ec8ffcb4c83643/out/lib -L native=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/build/openssl-sys-a396ed4090358d9c/out/openssl-build/install/lib -L native=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/build/libgit2-sys-20dec9c6d8dcfe0e/out/build -L native=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/build/libssh2-sys-21b588cb4b4fbbb6/out/build` (exit status: 254)

@bors
Copy link
Contributor

bors commented Jun 30, 2023

💔 Test failed - checks-actions

@bors bors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jun 30, 2023
@workingjubilee
Copy link
Member

another instance of #113065

@bors retry

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jun 30, 2023
@bors
Copy link
Contributor

bors commented Jun 30, 2023

⌛ Testing commit a7158ec with merge af9df2f...

@bors
Copy link
Contributor

bors commented Jun 30, 2023

☀️ Test successful - checks-actions
Approved by: nagisa
Pushing af9df2f to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Jun 30, 2023
@bors bors merged commit af9df2f into rust-lang:master Jun 30, 2023
@rustbot rustbot added this to the 1.72.0 milestone Jun 30, 2023
@rust-timer
Copy link
Collaborator

Finished benchmarking commit (af9df2f): comparison URL.

Overall result: ❌ regressions - no action needed

@rustbot label: -perf-regression

Instruction count

This is a highly reliable metric that was used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
1.7% [1.7%, 1.7%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
0.7% [0.5%, 0.9%] 2
Regressions ❌
(secondary)
1.6% [1.6%, 1.6%] 1
Improvements ✅
(primary)
-0.4% [-0.4%, -0.4%] 2
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.2% [-0.4%, 0.9%] 4

Cycles

This benchmark run did not return any relevant results for this metric.

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 660.129s -> 659.918s (-0.03%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
merged-by-bors This PR was explicitly merged by bors. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

create_object_file doesn't set correct ELF header flags for AVR targets