Owen Reynolds via llvm-dev
2019-Jul-10 13:02 UTC
[llvm-dev] [llvm-ar] default llvm-ar archive format type gnu vs darwin
Hi all, I've been making some additional tests for llvm-ar recently and was surprised by the behaviour regarding which archive format to output when the --format argument hasn't been used.>From 273373:Try to be more clever about selecting the default format. When an existing archive is used, use the type of the archive to determine the format. When existing members are present, use the first member's format to determine the format to use. If we are creating an empty archive (MRI mode) or are adding non-object members, default to the current behaviour of using the host type due to the lack of a better alternative. This aids in cross-compilation on Darwin to non-Darwin platforms which rely on GNU format archives. This doesn't seem ideal to me, particularly the use of the first member to decide format as this is not obvious from a user perspective. Would it be better to just default to host type or treat them as separate tools and decide default format by tool name? Thanks, Owen -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190710/cc3203ce/attachment-0001.html>
James Y Knight via llvm-dev
2019-Jul-10 14:27 UTC
[llvm-dev] [llvm-ar] default llvm-ar archive format type gnu vs darwin
Basically the only reason to choose one ar archive format over another is to enable the linker used on that platform to read it (in case it cannot read all formats). Thus, attempting to automatically choose the format which is most likely to be readable by linkers generally used with the provided object-file format seems pretty sensible. What problem do you see here? On Wed, Jul 10, 2019 at 9:03 AM Owen Reynolds via llvm-dev < llvm-dev at lists.llvm.org> wrote:> Hi all, > > I've been making some additional tests for llvm-ar recently and was > surprised by the behaviour regarding which archive format to output when > the --format argument hasn't been used. > > From 273373: > > Try to be more clever about selecting the default format. When an existing > archive is used, use the type of the archive to determine the format. When > existing members are present, use the first member's format to determine > the > format to use. If we are creating an empty archive (MRI mode) or are > adding > non-object members, default to the current behaviour of using the host > type due > to the lack of a better alternative. This aids in cross-compilation on > Darwin > to non-Darwin platforms which rely on GNU format archives. > > > This doesn't seem ideal to me, particularly the use of the first member to > decide format as this is not obvious from a user perspective. Would it be > better to just default to host type or treat them as separate tools and > decide default format by tool name? > > Thanks, > > Owen > > > > > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190710/efc992c9/attachment.html>
Owen Reynolds via llvm-dev
2019-Jul-11 16:03 UTC
[llvm-dev] [llvm-ar] default llvm-ar archive format type gnu vs darwin
Thanks for the explanation James, I agree it makes sense to select output based on platform due to what you outline above. I was thinking that the behaviour to do this is a little opaque to the user if they were expecting a particular format. For example a user on Darwin has the correct format by default, however if they create an archive with non-MachO objects the format will differ without warning, same if they request a thin archive. I understand the main use case is as above but I was thinking it has the potential to cause surprise. On Wed, Jul 10, 2019 at 3:28 PM James Y Knight <jyknight at google.com> wrote:> Basically the only reason to choose one ar archive format over another is > to enable the linker used on that platform to read it (in case it cannot > read all formats). Thus, attempting to automatically choose the format > which is most likely to be readable by linkers generally used with the > provided object-file format seems pretty sensible. > > What problem do you see here? > > On Wed, Jul 10, 2019 at 9:03 AM Owen Reynolds via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > >> Hi all, >> >> I've been making some additional tests for llvm-ar recently and was >> surprised by the behaviour regarding which archive format to output when >> the --format argument hasn't been used. >> >> From 273373: >> >> Try to be more clever about selecting the default format. When an >> existing >> archive is used, use the type of the archive to determine the format. >> When >> existing members are present, use the first member's format to determine >> the >> format to use. If we are creating an empty archive (MRI mode) or are >> adding >> non-object members, default to the current behaviour of using the host >> type due >> to the lack of a better alternative. This aids in cross-compilation on >> Darwin >> to non-Darwin platforms which rely on GNU format archives. >> >> >> This doesn't seem ideal to me, particularly the use of the first member >> to decide format as this is not obvious from a user perspective. Would it >> be better to just default to host type or treat them as separate tools and >> decide default format by tool name? >> >> Thanks, >> >> Owen >> >> >> >> >> >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190711/a2efbcdc/attachment.html>