<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/src/librustc_back/target/powerpc64le_unknown_linux_gnu.rs, branch 1.22.1</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=1.22.1</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=1.22.1'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2017-09-30T13:54:08+00:00</updated>
<entry>
<title>rustc: Specify c_int width for each target</title>
<updated>2017-09-30T13:54:08+00:00</updated>
<author>
<name>Daniel Klauer</name>
<email>daniel.c.klauer@web.de</email>
</author>
<published>2017-09-30T11:47:49+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=a204c193cad7309412e98db09d6bf8f3c456b063'/>
<id>urn:sha1:a204c193cad7309412e98db09d6bf8f3c456b063</id>
<content type='text'>
(all i32 for now, as in liblibc)
</content>
</entry>
<entry>
<title>rustc: Implement the #[global_allocator] attribute</title>
<updated>2017-07-05T21:37:01+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2017-06-03T21:54:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=695dee063bcd40f154bb27b7beafcb3d4dd775ac'/>
<id>urn:sha1:695dee063bcd40f154bb27b7beafcb3d4dd775ac</id>
<content type='text'>
This PR is an implementation of [RFC 1974] which specifies a new method of
defining a global allocator for a program. This obsoletes the old
`#![allocator]` attribute and also removes support for it.

[RFC 1974]: https://github.com/rust-lang/rfcs/pull/197

The new `#[global_allocator]` attribute solves many issues encountered with the
`#![allocator]` attribute such as composition and restrictions on the crate
graph itself. The compiler now has much more control over the ABI of the
allocator and how it's implemented, allowing much more freedom in terms of how
this feature is implemented.

cc #27389
</content>
</entry>
<entry>
<title>-Z linker-flavor</title>
<updated>2017-04-07T15:52:42+00:00</updated>
<author>
<name>Jorge Aparicio</name>
<email>japaricious@gmail.com</email>
</author>
<published>2017-02-21T19:47:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=9d11b089ad136432dff6c49c6eb3c48c7f6e5273'/>
<id>urn:sha1:9d11b089ad136432dff6c49c6eb3c48c7f6e5273</id>
<content type='text'>
This patch adds a `-Z linker-flavor` flag to rustc which can be used to invoke
the linker using a different interface.

For example, by default rustc assumes that all the Linux targets will be linked
using GCC. This makes it impossible to use LLD as a linker using just `-C
linker=ld.lld` because that will invoke LLD with invalid command line
arguments. (e.g. rustc will pass -Wl,--gc-sections to LLD but LLD doesn't
understand that; --gc-sections would be the right argument)

With this patch one can pass `-Z linker-flavor=ld` to rustc to invoke the linker
using a LD-like interface. This way, `rustc -C linker=ld.lld -Z
linker-flavor=ld` will invoke LLD with the right arguments.

`-Z linker-flavor` accepts 4 different arguments: `em` (emcc), `ld`,
`gcc`, `msvc` (link.exe). `em`, `gnu` and `msvc` cover all the existing linker
interfaces. `ld` is a new flavor for interfacing GNU's ld and LLD.

This patch also changes target specifications. `linker-flavor` is now a
mandatory field that specifies the *default* linker flavor that the target will
use. This change also makes the linker interface *explicit*; before, it used to
be derived from other fields like linker-is-gnu, is-like-msvc,
is-like-emscripten, etc.

Another change to target specifications is that the fields `pre-link-args`,
`post-link-args` and `late-link-args` now expect a map from flavor to linker
arguments.

``` diff
-    "pre-link-args": ["-Wl,--as-needed", "-Wl,-z,-noexecstack"],
+    "pre-link-args": {
+        "gcc": ["-Wl,--as-needed", "-Wl,-z,-noexecstack"],
+        "ld": ["--as-needed", "-z,-noexecstack"],
+    },
```

[breaking-change]  for users of custom targets specifications
</content>
</entry>
<entry>
<title>Disable jemalloc on aarch64/powerpc</title>
<updated>2016-10-27T15:08:33+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2016-10-25T02:33:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=de80670f7487f5db26e3929f7f2f464345859b49'/>
<id>urn:sha1:de80670f7487f5db26e3929f7f2f464345859b49</id>
<content type='text'>
Sounds like jemalloc is broken on systems which differ in page size than the
host it was compiled on (unless an option was passed). This unfortunately
reduces the portability of binaries created and can often make Rust segfault by
default. For now let's patch over this by disabling jemalloc until we can figure
out a better solution.

Closes #36994
Closes #37320
cc jemalloc/jemalloc#467
</content>
</entry>
<entry>
<title>change max_atomic_width type from u64 to Option&lt;u64&gt;</title>
<updated>2016-10-04T04:45:40+00:00</updated>
<author>
<name>Jorge Aparicio</name>
<email>japaricious@gmail.com</email>
</author>
<published>2016-10-04T04:45:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=6136069609f40e2436d810d4a35433d42266fadc'/>
<id>urn:sha1:6136069609f40e2436d810d4a35433d42266fadc</id>
<content type='text'>
to better express the idea that omitting this field defaults this value
to target_pointer_width
</content>
</entry>
<entry>
<title>librustc_back: convert fn target() to return Result</title>
<updated>2016-07-27T17:28:40+00:00</updated>
<author>
<name>Doug Goldstein</name>
<email>cardoe@cardoe.com</email>
</author>
<published>2016-07-24T16:47:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=eafecbf86855c30d2f6d9c518165edec4cca8248'/>
<id>urn:sha1:eafecbf86855c30d2f6d9c518165edec4cca8248</id>
<content type='text'>
Change all the target generation functions to return a Result&lt;Target,
String&gt; so that targets that are unable to be instantiated can be
expressed as an Err instead of a panic!(). This should improve #33497 as
well.
</content>
</entry>
<entry>
<title>Add #[cfg(target_has_atomic)] to get atomic support for the current target</title>
<updated>2016-05-09T12:31:47+00:00</updated>
<author>
<name>Amanieu d'Antras</name>
<email>amanieu@gmail.com</email>
</author>
<published>2016-04-15T19:16:19+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=04835ea5ec669636fdfbd84d17dbdda4c36bdd9c'/>
<id>urn:sha1:04835ea5ec669636fdfbd84d17dbdda4c36bdd9c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Make data-layout mandatory in target specs.</title>
<updated>2016-04-19T13:08:45+00:00</updated>
<author>
<name>Eduard Burtescu</name>
<email>edy.burt@gmail.com</email>
</author>
<published>2016-04-18T12:38:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=0776399eac62f8cf5cb02761014e8ed6c51204aa'/>
<id>urn:sha1:0776399eac62f8cf5cb02761014e8ed6c51204aa</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove "powerpc64le" and "mipsel" target_arch</title>
<updated>2016-02-02T04:39:07+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2016-01-30T21:27:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=8f803c202681fa137fca691df999ac3f335d29c1'/>
<id>urn:sha1:8f803c202681fa137fca691df999ac3f335d29c1</id>
<content type='text'>
Currently the `mipsel-unknown-linux-gnu` target doesn't actually set the
`target_arch` value to `mipsel` but it rather uses `mips`. Alternatively the
`powerpc64le` target does indeed set the `target_arch` as `powerpc64le`,
causing a bit of inconsistency between theset two.

As these are just the same instance of one instruction set, let's use
`target_endian` to switch between them and only set the `target_arch` as one
value. This should cut down on the number of `#[cfg]` annotations necessary and
all around be a little more ergonomic.
</content>
</entry>
<entry>
<title>Fix LLVM default CPU on powerpc64 and powerpc64le</title>
<updated>2016-01-17T19:45:10+00:00</updated>
<author>
<name>Anton Blanchard</name>
<email>anton@samba.org</email>
</author>
<published>2016-01-17T12:06:55+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=1fb9f42c6bcad9111d0f5ee8b8a419696c2ef561'/>
<id>urn:sha1:1fb9f42c6bcad9111d0f5ee8b8a419696c2ef561</id>
<content type='text'>
We currently pass generic as the CPU to LLVM. This results in worse
than required code generation. On little endian, which is only POWER8,
we avoid many POWER4 and newer instructions.

Pass ppc64 and ppc64le instead.
</content>
</entry>
</feed>
