title: Replacing shared object (.so file) while main program is running
body: <p>I have a shared object gateway.so (in Linux/C). And  a.out application is using it. </p>
  
  <h2>QUESTION A</h2>
  
  <p>I guess: when process a.out starts, the loader loads the gateway.so  (I am not using dl functions like <code>dlopen</code>). So all the runtime symbol resolutions to gateway.so will happen in memory. It need not to access gateway.so from disk any more.</p>
  
  <p>Am I right?</p>
  
  <p>So I cannot replace the gateway.so with an updated version, while a.out is running, right?</p>
  
  <h2>QUESTION B</h2>
  
  <p>Another related question: Once when I substitued and outdated version of the gateway.so file, i got the message </p>
  
  <blockquote>
    <p>"a.out: can't resolve symbol 'Test_OpenGateway'"</p>
  </blockquote>
  
  <p>Which program component (loader/linker ...) sends this output ? This component is executing as part of the same process context ?</p>