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.