- User Since
- Jan 31 2017, 4:46 PM (63 w, 6 d)
Thu, Apr 19
We should revisit the implicit dependency on fdio. For other compiler-rt libraries' Fuchsia ports, we've kept it at the pure vDSO and minimal libc ABIs.
Wed, Apr 11
Fri, Mar 30
Tue, Mar 27
lgtm but I'm not authoritative.
Mar 22 2018
Mar 20 2018
Lgtm with some more comments
When targetting Darwin we should really not be even compiling libc++/libc++abi and certainly should not have anything else compiling against their headers since at runtime the system libraries will be used and so things better compile against the system headers that match.
Do these settings accomplish that?
Mar 18 2018
We aren't actually using DWARF 5 yet AFAICT. Our builds don't pass -gdwarf-5. So I'm not sure we have yet verified that all the DWARF-consuming tools people are using with Fuchsia binaries can handle all of DWARF 5 (which has several major format changes). I'd certainly like 5 to be the default, but I think we need to establish a set of consumers we care about and verify their format version support before we can be sure about this.
Mar 14 2018
So Sam and I had dinner together. :-) I don't know a lot about WebAssembly and Sam doesn't know a lot about traditional (e.g. ELF) linkers, so we talked about the parallels in somewhat general terms while explaining the specifics to each other without distracting from our dessert.
In talking about what WebAssembly wants to do with converting some kinds of references to other kinds, I described the obvious analogy to the various kinds of linker relaxation that have been done in traditional machine code linking such as ELF.
There are two precedents that I can cite in detail off hand. In both cases the reloc type is specified in the ABI as for use with certain instruction patterns and the linker is expected to rewrite instructions with complete knowledge of their meaning, rather than just deliver values into bitfields.
One is x86-64's GOTPCREL and GOTPCRELX relocs, where GNU linkers check for expected opcode bytes immediate prior to the r_offset location and silently forego the instruction-rewriting optimization if the reloc is not used in the expected context.
The other is x86-64's TLS relocs, where GNU linkers check the opcode bytes immediatley prior to the r_offset location and diagnose an error if they don't match specific instruction patterns prescribed in the ABI for each reloc that enables linker relaxation (IIRC for some cases the x86 ABI mandates that linkers perform the relaxation, rather than just describing how the optimization is possible).
I don't know off hand how LLD handles these cases, but I would say that matching the GNU linkers' behavior is right--with the possible caveat that perhaps there should be a warning emitting for using GOTPCRELX relocs with instructions the linker doesn't know how to rewrite.
I know that other machines have many more relocs that are prescribed in their ABIs as for use with specific instruction patterns, but I don't know off hand what the details of those are, nor how existing linkers handle situations where such relocs are used with mismatching instructions.
Mar 5 2018
Mar 1 2018
Jan 12 2018
I wonder if cpplint.py is worthwhile any more. Perhaps it should be replaced by a check that clang-format doesn't decide to change anything.
clang-format and lib/sanitizer_common/scripts/cpplint.py disagree about whitespace before braces.
ping. Will this or D41277 land?
Dec 21 2017
Dec 20 2017
This works fine for me. Perhaps Rui should land D39348 first and then you can rebase this in terms of that to discuss the remaining features (-R alias, no input files case).
Dec 19 2017
Mutual exclusion is not target-specific and is already handled in SanitizerArgs. The test coverage for that looks fine.
Dec 18 2017
Works for me. D41277 works just as well. I don't know how you plan to reconcile the two.
Dec 1 2017
Great! Please land it for me.
Nov 30 2017
This change as is fixes my real-world case.
Thanks! Now I'm just blocked on --just-symbols...
Fuchsia bit LGTM. Linux bit highly suspect.
Nov 27 2017
Nov 21 2017
Nov 20 2017
Nov 17 2017
LGTM with comment added but if a different approach will be required for multiple Linux targets (which we all treat as "hostish") then it's worth at least thinking about that now.
LGTM. I wonder if it's really worth keeping --strip-non-alloc.
Nov 10 2017
In principle this should be OK since we're unconditionally building the runtimes for default.
However, this means that any dynamically-linked host builds will assume our toolchain-provided shared libraries are available on the runtime host in standard library places.
I don't think we want that. Perhaps we could make -static-libstdc++ default in our host targets. But that's not really enough, since compiler-rt has some too. Probably better to just disable building the shared libraries altogether for the host targets.
Oct 26 2017
This doesn't implement the -R switch name, which is the traditional interface from time immemorial. I can use --just-symbols, but you really should handle -R too.
Oct 24 2017
Oct 23 2017
This seems like how it always should have been, since -fuse-ld=lld sets it to ld.lld, not lld.
Looks to me like the existing MipsLinux and WebAssembly implementations are wrong too and only BareMetal is right.
Oct 21 2017
This change works on my case, but it names the reloc sections it emits based on the first input section in the output section being relocated rather than on the output section itself.
e.g. in my -ffunction-sections --gc-sections --emit-relocs build, the SHT_RELA section with sh_info pointing to the .text section is called .rela.text.first_function_in_text rather than .rela.text.
Oct 17 2017
Since we use lld, -Wl,-O2 also helps make the binaries smaller.
Oct 15 2017
http://www.sco.com/developers/gabi/latest/ch5.pheader.html#note_section describes alignment of the contents of notes. Maintaining that alignment is obviously impossible if the section is not so aligned.
Oct 13 2017
Oct 11 2017
Oct 10 2017
Oct 9 2017
Oct 8 2017
I wonder why my builds have never had an undefined symbol HandleDeadlySignal.
Oct 7 2017
What effect does this have?
Nothing built for Fuchsia ought to be using sanitizer_signal_interceptors.inc or HandleDeadlySignal in the first place.
Oct 5 2017
Sep 12 2017
Sep 11 2017
Sep 2 2017
Not being expert in the yaml2obj code base, this looks good to me with the caveats below.
I'm not closely familiar with this code base, so it should probably still get some review from someone who has reviewed the objcopy implementation so far.
But just looking at the apparent logic in this change, it looks OK to me with the caveats noted below.
Sep 1 2017
Aug 29 2017
Aug 28 2017
Re-land of https://reviews.llvm.org/D36599
Actually builds now that compiler-rt has been updated.
Aug 27 2017
Added test case.
Aug 16 2017
You have a bunch of changes here to support individual members >=4G, but I'm not sure there is any need for that.
The bug is just about the whole archive being >=4G so that the member offsets need to be 64 bits.
If you want to support members >=4G I think that can be a separate change since it's not related to the bug.
This is necessary for D36599 to (re-)land.
Aug 15 2017
Aug 10 2017
Aug 9 2017
Aug 8 2017
Rebased and ready to land once D36385 has landed.
Please land it for me!
I think I've done everything requested in review.
If you are both happy with it now, please land it for me!
Options struct for Init.
Remove excess reformatting.
Don't change tctx->detached.
Updated stale comment. Changed FinishThread logic as suggested in review.
Aug 7 2017
Thanks! Please land it for me.
Avoided new argument to FinishThread.