213 Commits

Author SHA1 Message Date
Thomas Pöchtrager
80a127f521 Attempt to fix build error 2020-03-20 13:51:18 +01:00
Thomas Pöchtrager
11dc49ae17 Update README.md 2020-03-20 13:35:53 +01:00
Thomas Pöchtrager
466063c7f7 ld64 512.4 & cctools 949.0.1 (WIP) 2020-03-20 13:33:04 +01:00
Thomas Pöchtrager
606eb7dcb2 Fix for https://github.com/tpoechtrager/osxcross/issues/216#issuecomment-599044727 2020-03-14 17:51:11 +01:00
Thomas Pöchtrager
4e1faecce8 Fix LLVM trunk build
ld: error: duplicate symbol: dis_info
>>> defined at i386_disasm.c:1665
>>>            otool-i386_disasm.o:(dis_info)
>>> defined at arm_disasm.c:163
>>>            otool-arm_disasm.o:(.bss+0x8)

ld: error: duplicate symbol: dis_info
>>> defined at i386_disasm.c:1665
>>>            otool-i386_disasm.o:(dis_info)
>>> defined at arm64_disasm.c:62
>>>            otool-arm64_disasm.o:(.bss+0x0)
clang-11: error: linker command failed with exit code 1 (use -v to see invocation)
2020-03-11 19:49:44 +01:00
Thomas Pöchtrager
2ac55b7503 Silence warning on AArch64 too
Useless warning because it's silenced by default on all of their platforms
2020-02-22 22:13:44 +01:00
Thomas Pöchtrager
ae83e7fcde Fix for #74 2020-01-23 14:30:08 +01:00
Thomas Pöchtrager
aff98cdb9e arm64e 2020-01-07 16:26:07 +01:00
Thomas Pöchtrager
168e4ad2e0 arm64e 2020-01-07 16:24:49 +01:00
Thomas Pöchtrager
707ac80aa8 arm64e: Patch the header file instead of changing sources to avoid merge conflicts 2020-01-07 16:22:22 +01:00
Thomas Pöchtrager
23f21436e0
Merge pull request #76 from sbingner/master
Add arm64e patches from elucubratus
2020-01-07 15:34:58 +01:00
Sam Bingner
7c5dc14232 Add arm64e patches from elucubratus 2020-01-06 16:37:23 -10:00
Thomas Pöchtrager
f2890afb8a Fix LLVM trunk build 2019-12-29 20:44:50 +01:00
Thomas Pöchtrager
8239a5211b Add another missing change for Android 2019-11-06 18:21:03 +01:00
Thomas Pöchtrager
9fa76fb95a Add missing file 2019-11-06 17:56:26 +01:00
Thomas Pöchtrager
5e9c52005f Fixes to make cctools and ld64 work on Android 2019-11-06 17:54:58 +01:00
Thomas Pöchtrager
406ce466ac Fix building with older clang compilers 2019-11-04 20:25:36 +01:00
Thomas Pöchtrager
a889ea66b7 Fix Linux/AArch32 and iOS builds 2019-11-01 18:45:25 +01:00
Thomas Pöchtrager
c8def74264 Update README.md 2019-10-31 20:33:03 +01:00
Thomas Pöchtrager
bef74700f8 Revert "Make 'as' relocatable"
This reverts commit 5674c31aac6ec9f5ea79618e2d942261cc49a456.

I accidentally committed this again...
2019-10-31 20:29:29 +01:00
Thomas Pöchtrager
cfc428bc52 Update autogenerated files 2019-10-31 20:07:19 +01:00
Thomas Pöchtrager
a4f3a3e0ea ld64 450.3 & cctools 927.0.2 2019-10-31 20:06:41 +01:00
Thomas Pöchtrager
3764b223c0 Fix glibc sys/sysctl.h deprecation warnings 2019-10-07 15:18:32 +02:00
Thomas Pöchtrager
20af0932d4 iOS toolchain: No need to run 'autogen.sh' (#70) 2019-09-11 16:20:21 +02:00
Thomas Pöchtrager
8b155ce07e Revert "Revert "Make 'as' relocatable""
This reverts commit 8bd2c684ac84c33849ef169ef6b9f84e9afeb3fa.
2019-08-19 19:28:30 +02:00
Thomas Pöchtrager
8bd2c684ac Revert "Make 'as' relocatable"
This reverts commit 5674c31aac6ec9f5ea79618e2d942261cc49a456.

https://github.com/tpoechtrager/osxcross/issues/191
2019-08-19 19:24:29 +02:00
Thomas Pöchtrager
5674c31aac Make 'as' relocatable 2019-08-17 11:48:05 +02:00
Thomas Pöchtrager
3f979bbcd7
Merge pull request #69 from froydnj/fix-atom-alias-information
fix atom alias information in LTO linking
2019-07-02 18:38:02 +02:00
Nathan Froyd
3d4795134b fix atom alias information in LTO linking
When performing LTO, `ld64` reads in any LLVM bitcode files, creates
atoms for them, and compiles the bitcode files to their corresponding
in-memory Mach-O files.  These Mach-O files are then
loaded (lto_file.cpp:Parser::loadMachO), and information from the atoms
in the Mach-O files is then synced to the corresponding atoms from the
LLVM bitcode files.

However, the underlying function (ld.hpp:Atom::setAttributesFromAtom)
fails to copy over the alias bit from the Mach-O symbol.  This omission
means that the original LLVM atom is not correctly marked as an alias
and therefore not correctly sorted prior to the symbol it is an alias
for (order.cpp:Layout::Comparer::operator()).  The end result is that
the alias symbol winds up pointing at a different symbol, with
predictably disastrous consequences when the aliased symbol is called.

This problem has been observed when performing cross-language LTO with
Firefox.  See also
https://bugzilla.mozilla.org/show_bug.cgi?id=1486042#c92 for more
details.

The fix is simple: we need to copy the alias bit over, just like other
fields.
2019-07-02 12:08:12 -04:00
Thomas Pöchtrager
a2e02aad90 Update autogenerated files 2019-06-04 18:20:13 +02:00
Thomas Pöchtrager
4d099de815 Add --with-libxar=<path> configure option 2019-06-04 18:18:52 +02:00
Thomas Pöchtrager
5321df7206
Merge pull request #67 from fanquake/sudo_deprecated
travis: remove deprecated use of sudo
2019-06-04 15:19:18 +02:00
fanquake
dd8e38a1e9
travis: remove deprecated use of sudo 2019-06-03 16:15:36 -04:00
Thomas Pöchtrager
7731c655fd Fix ARM and AArch64 build 2019-06-02 17:48:09 +02:00
Thomas Pöchtrager
f22b786968 Fix FreeBSD build 2019-06-02 14:28:21 +02:00
Thomas Pöchtrager
da74096c93 ld64: Fix finding object files without TAPI library 2019-06-01 20:53:55 +02:00
Thomas Pöchtrager
349383cb2a Update README.md 2019-06-01 19:33:42 +02:00
Thomas Pöchtrager
1433da83e9 Update .travis.yml 2019-06-01 19:33:42 +02:00
Thomas Pöchtrager
634c77e4f1 Misc fixes 2019-06-01 19:33:42 +02:00
Thomas Pöchtrager
4ca06cb720 Fix LTO_API_VERSION ifdefs
The documentation is wrong about these.
2019-06-01 19:33:42 +02:00
Thomas Pöchtrager
873c023069 An attempt to get TAPI platform "zippered" working
90d0bae361
2019-06-01 19:33:42 +02:00
Thomas Plöchtrager
c736cb58bd ld64: Silence i386 deprecation warning for now 2019-06-01 19:33:42 +02:00
Matthew Bauer
cf234de0a5 Run autoreconf
Command run was:

nix-shell -I nixpkgs=channel:nixos-19.03 -p autoconf automake libtool --run 'autoreconf -if'
2019-06-01 19:33:42 +02:00
Matthew Bauer
13acc08aeb Add manpages for ld64 2019-06-01 19:33:42 +02:00
Thomas Plöchtrager
5755bd8451 cctools 921 & ld64 409.12 2019-06-01 19:33:42 +02:00
Thomas Pöchtrager
1e3f614aff
Merge pull request #62 from delroth/ranlib-utime
ranlib: attempt to use utimens variants when available
2018-12-13 17:25:43 +01:00
Pierre Bourdon
17c2bf9247
ranlib: attempt to use utimens variants when available
When finalizing an archive, ranlib performs the following operations:
1. stat to obtain the current mtime (pre-write mtime)
2. rewrite the timestamp in the archive header
3. utime to restore the pre-write mtime

Unfortunately, utime only supports a 1s resolution. This means that on systems
with sub-second filesystem timestamps resolution (one notable example being
APFS), the following sequence of events can happen:
1. stat to obtain the current mtime (pre-write mtime) returns hh:mm:ss.123
2. rewrite the timestamp in the archive header
3. utime to restore the pre-write mtime ends up restoring hh:mm:ss.000.

This can cause ranlib to roll back the mtime of an archive in the past instead
of moving it into the future. Given that "make" heavily relies on filesystem
timestamps to determine dependencies and required rebuilds, this can lead to
many problems. This was discovered because it caused random failures when
parallel building postgresql.

To address the issue, we attempt to use utimensat if available. This is checked
via autoconf, but on macOS this is not enough: utimensat can be present at
compile time without being available at link time, and it was only added very
recently (10.13). Inspired by how CPython is handling this, we use #pragma weak
to make the runtime dependency optional.
2018-11-30 05:12:50 +01:00
Thomas Pöchtrager
07619027f8 Update autogenerated files 2018-10-24 22:04:36 +02:00
Thomas Pöchtrager
d75ed048cd Fix building otool 2018-10-24 22:04:25 +02:00
Thomas Pöchtrager
967bc9d48f
Merge pull request #61 from matthewbauer/add-manpages
Install man pages by default
2018-10-24 21:30:54 +02:00