title: Using assembly JMP function on x86_64
body: <p>I'm really new to programming (in general - it's pathetic) and some Python-related assembly has cropped up in this app that I'm hacking to run on 64-bit.</p>
  
  <p>Essentially, the code goes like this:</p>
  
  <pre><code>#define FUNCTION(name)        \
    .globl _##name;             \
    _##name:                    \
      jmp *(_p_##name)
  
  .text
    FUNCTION(name)
  </code></pre>
  
  <p>The FUNCTION(name) syntax is used about 50 times to define headers for an external Python library as far as I can tell (I'm not going to pretend that I fully understand it, I'm just bugfixing).</p>
  
  <p>Since I'm compiling for x86_64, the following error is spit out by GCC for each FUNCTION(name) instance:</p>
  
  <blockquote>
    <p>32-bit absolute addressing is not supported for x86-64</p>
    
    <p>cannot do signed 4 byte relocation</p>
  </blockquote>
  
  <p>How would I go about "fixing" this to run on x86_64?</p>