Existe uma maneira de fazer o objdump ler stdin em vez de arquivo?

7

No meu caso específico, eu quero usá-lo para despejar o que eu echo .

Eu não quero envolver nenhum arquivo ...

Existe uma maneira de fazer objdump ler stdin?

    
por omg 09.11.2011 / 04:05

2 respostas

5

Você não pode. Não há maneira de contornar isso, você terá que usar o arquivo temporário.

O arquivo fonte readelf.c tem essa verificação incondicional (no binutils 2.22-8 pelo menos) antes mesmo de tentar abrir o arquivo:

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

Portanto, se o arquivo for qualquer coisa, menos o arquivo normal (como symlink ou char device, como no caso de /dev/stdin , /proc/self/fd/* , etc.), não funcionará.

Alternativamente, você pode modificar a fonte e usar o objdump modificado, mas a portabilidade é assim.

    
por 27.10.2014 / 22:36
4

você sempre pode fazer

objdump -d /dev/stdin < t2.o

ou

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

amostra

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

/dev/stdin: file format elf64-x86-64

Sections: Idx Name Size VMA LMA
File off Algn 0 .group 00000008 0000000000000000 0000000000000000 00000040 2**2 CONTENTS, READONLY, EXCLUDE, GROUP, LINK_ONCE_DISCARD

    
por 09.11.2011 / 09:22

Tags