在我的特定情况下,我想用它来转储我的echo
.
我不想涉及任何文件......
有没有办法让objdump
读取STDIN
?
你不能。没有办法解决这个问题,您将不得不使用临时文件。
源文件 readelf.c 甚至在尝试打开文件之前都进行了无条件检查(至少在 binutils 2.22-8 中):
if (! S_ISREG (statbuf.st_mode))
{
error (_("'%s' is not an ordinary file\n"), file_name);
return 1;
}
Run Code Online (Sandbox Code Playgroud)
因此,如果该文件是什么,但普通文件(如符号链接,或字符设备如的情况下/dev/stdin
,/proc/self/fd/*
等)将无法正常工作。
或者,您可以修改源并使用修改后的 objdump,但您的可移植性会提高。
你总是可以做
objdump -d /dev/stdin < t2.o
Run Code Online (Sandbox Code Playgroud)
或者
cat t2.o | objdump -d /dev/stdin
Run Code Online (Sandbox Code Playgroud)
样本
[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 内容、只读、排除、组、LINK_ONCE_DISCARD