题 有没有办法从stdin而不是文件中读取objdump?


在我的具体情况下,我想用它来抛弃我 echo

我不想涉及任何文件......

有没有办法 objdump 从stdin读取而不是?


7
2017-11-09 03:05




你能再详细解释一下你的情况吗? - quanta


答案:


你不能。没有办法,你将不得不使用临时文件。

在尝试打开文件之前,源文件readelf.c进行了这种无条件检查(至少在binutils 2.22-8中):

if (! S_ISREG (statbuf.st_mode))
    {
      error (_("'%s' is not an ordinary file\n"), file_name);
      return 1;
    }

因此,如果文件不是常规文件(如symlink,或char设备,如果是) /dev/stdin/proc/self/fd/*等等)它不会起作用。

或者,您可以修改源代码并使用修改后的objdump,但这样可以实现可移植性。


5
2017-10-27 21:36





你可以随时做

objdump -d /dev/stdin < t2.o

要么

cat t2.o | objdump -d /dev/stdin

样品

[root @ myhost cc] #objdump -h / dev / stdin <t2.o

/ dev / stdin:文件格式为elf64-x86-64

章节:Idx名称大小VMA LMA
  文件关闭Algn 0 .group 00000008 0000000000000000   0000000000000000 00000040 2 ** 2                     目录,READONLY,EXCLUDE,GROUP,LINK_ONCE_DISCARD


4
2017-11-09 08:22



cat t2.o | objdump -d /dev/stdin 不起作用。 /dev/stdin 仅当它对应于真实文件时才有效。由于您的解决方案需要存在该文件,因此不会回答OP。 - dragonroot
这可能适用于此调用 objdump 特别是,但如果确实如此,它可能会失败 seek 对文件的操作。当工具没有 - 对于标准输出,通常就是这种情况。 - Ciro Santilli 新疆改造中心 六四事件 法轮功