[llvm-dev] [RFC] [tools] Changing Behavior of LLVM binutils When No File Is Specified

Alex Brachet-Mialot via llvm-dev llvm-dev at lists.llvm.org
Tue Jun 25 18:02:23 PDT 2019


> Does anyone actually use the default to a.out behavior?
This is a good point. What bugs me is continuity across the tools, I agree
with you that it isn't particularly useful to default to a.out. But we are
kind of stuck with the weird way that GNU's binutils do things. I am not in
favor of llvm-objdump defaulting to a.out, but llvm-readelf giving this
warning message. My guess is that moving away from using a.out by default
for llvm-objdump, llvm-nm and others whose gnu counter parts do this would
be more disruptive than my proposal.

As Jake pointed out we use "-" to describe stdin/stdout, GNU's tools do not
do this, so I think there is some precedence for us slightly modifying
behavior when we can reasonably say things will not happen, like the file
"-" existing.

On Tue, Jun 25, 2019 at 8:28 PM Michael Spencer <bigcheesegs at gmail.com>
wrote:

> On Tue, Jun 25, 2019 at 4:58 PM Alex Brachet-Mialot via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>> Some binutils, nm comes to mind, when to input file is specified will
>> default to a.out. Others do not do this and read from stdin by default. The
>> rest of this email will be specifically referencing these which read from
>> stdin, and not the tools which for various reasons do things differently.
>>
>> I propose that we change the behavior of these tools to use a.out when
>> appropriate. By appropriate I mean firstly, no input file specified and
>> also no stream redirection to stdin. These are the file types of stdin in
>> these scenarios:
>> $ writes-to-stdout | prog # named pipe (fifo)
>> $ prog < file # regular file
>> $ prog # reading from tty, character device
>>
>> Perhaps if stdin is a named pipe or regular file, then the default
>> behavior should be as it always was, to read from stdin, but if stdin is a
>> tty then we should use a.out as a default file. This lets these tools act
>> the same as their gnu counterparts (when meaningful) but also adds what I
>> think is convenient to not have to specify a.out.
>>
>> This proposal would look something like this:
>> $ llvm-strings # not meanigful to read from stdin here, look for a.out
>> $ llvm-strings < file # use stdin
>>
>> I may have got the behavior of stream redirection wrong here, or missed a
>> situation when reading from the terminal is useful. I would love some
>> feedback.
>>
>> Best,
>> Alex
>>
>>
> Does anyone actually use the default to a.out behavior?  I think it would
> be much friendlier to just print "file or pipe expected" and then print the
> help.
>
> - Michael Spencer
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190625/06fd7abd/attachment.html>


More information about the llvm-dev mailing list