public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
From: Ville Herva <vherva@niksula.hut.fi>
To: linux-ia64@vger.kernel.org
Subject: Re: [Linux-ia64] 2.4.16 + ia64-011128: Unable to execute a "rwx" program
Date: Sat, 05 Jan 2002 10:41:14 +0000	[thread overview]
Message-ID: <marc-linux-ia64-105590698805749@msgid-missing> (raw)
In-Reply-To: <marc-linux-ia64-105590698805720@msgid-missing>

On Fri, Jan 04, 2002 at 09:06:51PM -0800, you [Jim Wilson] claimed:
> 
> This usually means that the program specifies an interpreter, and the
> interpreter can not be found.
> 
> For a shell script, the interpreter is in the first line.  For instance,
> if I create a shell script called prog, and put in it two lines
> 	#!/bin/foo
> 	exit 0
> and then run it, I get the error "bash: ./prog: no such file or directory".
> The missing file is "/bin/foo" not "prog".

Surely. I just hadn't seen that happen with a compiled c file...
 
> For an ELF executable, the interpreter is stored in the PT_INTERP field.
> "readelf -l prog" will print out the value of the PT_INTERP field along
> with a bunch of other stuff.
> 
> On my system, readelf -l /usr/bin/zip prints out
>   INTERP         0x0000f4 0x080480f4 0x080480f4 0x00013 0x00013 R   0x1
>       [Requesting program interpreter: /lib/ld-linux.so.2]

./fob2          
zsh: no such file or directory: ./fob2
readelf -l ./fob2  
                                                                    
Elf file type is EXEC (Executable file)
Entry point 0x40000000000071a0
There are 7 program headers, starting at offset 64

Program Headers:
  Type           Offset             VirtAddr           PhysAddr
                 FileSiz            MemSiz              Flags  Align
  PHDR           0x0000000000000040 0x4000000000000040 0x4000000000000040
                 0x0000000000000188 0x0000000000000188  R E    8
  INTERP         0x00000000000001c8 0x40000000000001c8 0x40000000000001c8
                 0x0000000000000011 0x0000000000000011  R      1
      [Requesting program interpreter: /usr/lib/ld.so.1]
  LOAD           0x0000000000000000 0x4000000000000000 0x4000000000000000
                 0x00000000000dee10 0x00000000000dee10  R E    10000
  LOAD           0x00000000000dee10 0x600000000000ee10 0x600000000000ee10
                 0x000000000000a120 0x000000000000c6a0  RW     10000
  DYNAMIC        0x00000000000e8680 0x6000000000018680 0x6000000000018680
                 0x0000000000000220 0x0000000000000220  RW     8
  NOTE           0x00000000000001dc 0x40000000000001dc 0x40000000000001dc
                 0x0000000000000020 0x0000000000000020  R      4
  IA_64_UNWIND   0x00000000000db738 0x40000000000db738 0x40000000000db738
                 0x00000000000036d8 0x00000000000036d8  R      8

 Section to Segment mapping:
  Segment Sections...
   00     
   01     .interp 
   02     .interp .note.ABI-tag .hash .dynsym .dynstr .gnu.version
.gnu.version_d .gnu.version_r .rela.data .rela.got .rela.sdata
.rela.IA_64.pltoff .init .plt .text .fini .rodata .rdata __libc_atexit
__libc_subinit __libc_subfreeres .opd .IA_64.unwind_info .IA_64.unwind 
   03     .data .ctors .dtors .got .dynamic .sdata .srdata .IA_64.pltoff
.sbss .bss 
   04     .dynamic 
   05     .note.ABI-tag 
   06     .IA_64.unwind 

ls -l /usr/lib/ld.so.1
ls: /usr/lib/ld.so.1: No such file or directory

WORKING program: 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Elf file type is EXEC (Executable file)
Entry point 0x4000000000003bc0
There are 7 program headers, starting at offset 64

Program Headers:
  Type           Offset             VirtAddr           PhysAddr
                 FileSiz            MemSiz              Flags  Align
  PHDR           0x0000000000000040 0x4000000000000040 0x4000000000000040
                 0x0000000000000188 0x0000000000000188  R E    8
  INTERP         0x00000000000001c8 0x40000000000001c8 0x40000000000001c8
                 0x0000000000000018 0x0000000000000018  R      1
      [Requesting program interpreter: /lib/ld-linux-ia64.so.2]
  LOAD           0x0000000000000000 0x4000000000000000 0x4000000000000000
                 0x000000000001b970 0x000000000001b970  R E    10000
  LOAD           0x000000000001b970 0x600000000000b970 0x600000000000b970
                 0x0000000000000af0 0x0000000000000e30  RW     10000
  DYNAMIC        0x000000000001c018 0x600000000000c018 0x600000000000c018
                 0x0000000000000230 0x0000000000000230  RW     8
  NOTE           0x00000000000001e0 0x40000000000001e0 0x40000000000001e0
                 0x0000000000000020 0x0000000000000020  R      4
  IA_64_UNWIND   0x000000000001b1d8 0x400000000001b1d8 0x400000000001b1d8
                 0x0000000000000798 0x0000000000000798  R      8

 Section to Segment mapping:
  Segment Sections...
   00     
   01     .interp 
   02     .interp .note.ABI-tag .hash .dynsym .dynstr .gnu.version
.gnu.version_r .rela.data .rela.IA_64.unwind_info .rela.got .rela.sdata
.rela.IA_64.pltoff .init .plt .text .fini .rdata .opd .IA_64.unwind_info
.IA_64.unwind 
   03     .data .ctors .dtors .got .dynamic .sdata .srdata .IA_64.pltoff
.sbss .bss 
   04     .dynamic 
   05     .note.ABI-tag 
   06     .IA_64.unwind 

ls -l /lib/ld-linux-ia64.so.2
lrwxrwxrwx    1 root     root           11 Dec 28 09:49 /lib/ld-linux-ia64.so.2 -> ld-2.2.4.so

 
> >This is a c++ program I compiled with the Intel compiler.
> 
> My guess is that you have an old OS with a new executable, or an old
> executable with a new OS, in which case the executable is looking
> for different version of ld.so than the one that comes with the OS.
> 
> Another possibility is that you are missing one of the libraries that comes
> with the Intel compiler.  Or perhaps, you need an environment variable set
> before it will work correctly.

Yes.

Gwenole Beauchesne of Mandrake already pointed out to me that ecc hides a
-static switch in ecc.cfg. Unless I take it away, linking dynamic programs
with ecc works, but results in executables that give "no such file or
directory". If I remove the static switch, it works.

What I didn't realize is that the "no such file or directory" comes from
the unability to load suitable ld.so.

(The test program above is just a few line c program that links against few
dynamic X11 libraries.)


thanks for your time,

-- v --

v@iki.fi


      parent reply	other threads:[~2002-01-05 10:41 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-12-27  9:45 [Linux-ia64] 2.4.16 + ia64-011128: Unable to execute a "rwx" program Ville Herva
2002-01-05  5:06 ` Jim Wilson
2002-01-05 10:41 ` Ville Herva [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=marc-linux-ia64-105590698805749@msgid-missing \
    --to=vherva@niksula.hut.fi \
    --cc=linux-ia64@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox