No epb/eip registers in gdb "info frame"
<h2>Context</h2>
<p>When issuing the command <code>info frame</code> on my machine (with break point on <code>main</code>), the output is as follows:</p>
<pre><code>(gdb) info frame
Stack level 0, frame at 0x7fffffffdbd0:
 rip = 0x4005b1 in main; saved rip = 0x7ffff7a53b05
 Arglist at 0x7fffffffdbc0, args: 
 Locals at 0x7fffffffdbc0, Previous frame's sp is 0x7fffffffdbd0
 Saved registers:
  rbp at 0x7fffffffdbc0, rip at 0x7fffffffdbc8
</code></pre>
<p>As I understand from <a href="https://stackoverflow.com/a/16539242/3398271">this answer</a>, <code>eip</code> and <code>ebp</code> registers (not present in my output), have the following meaning:</p>
<blockquote>
<p>eip is the register for next instruction to execute (also called program counter)</p>
<p>&quot;ebp&quot; is the register usually considered as the starting address of the locals of this stack frame, which use &quot;offset&quot; to address</p>
</blockquote>
<p>From <a href="https://stackoverflow.com/a/36529824/3398271">this other answer</a>, I understand that</p>
<blockquote>
<p>[RIP is] the instruction pointer</p>
<p>[...]</p>
<p>Some of these registers were envisioned to be used for specific use, and commonly are. The most critical ones are the RSP and RBP.</p>
</blockquote>
<p>Finally, <code>info registers</code> gives me the following output:</p>
<pre><code>(gdb) info registers
rax            0x4005ad 4195757
rbx            0x0      0
rcx            0x0      0
rdx            0x7fffffffdcc0   140737488346304
rsi            0x7fffffffdca8   140737488346280
rdi            0x2      2
rbp            0x7fffffffdbc0   0x7fffffffdbc0
rsp            0x7fffffffdbc0   0x7fffffffdbc0
r8             0x7ffff7dd7c60   140737351875680
r9             0x7ffff7dead10   140737351953680
r10            0x7fffffffda50   140737488345680
r11            0x7ffff7a53a10   140737348188688
r12            0x4004b0 4195504
r13            0x7fffffffdca0   140737488346272
r14            0x0      0
r15            0x0      0
rip            0x4005b1 0x4005b1 &lt;main+4&gt;
eflags         0x246    [ PF ZF IF ]
cs             0x33     51
ss             0x2b     43
ds             0x0      0
es             0x0      0
fs             0x0      0
gs             0x0      0
</code></pre>
<p>(N.B.: tried with <code>info all-registers</code> as well. Much longer output, still no eip/epb -- which I was expecting, since according to documentation, these are vector/FPU registers.)</p>
<p>Based on all this, I suppose that:</p>
<ul>
<li>on my machine there are no epb/eip registers</li>
<li>instead of eip, rip is always used on my machine</li>
<li>instead of ebp, rbp is always used on my machine</li>
</ul>
<h2>Questions</h2>
<ol>
<li>Is the above understanding correct?
(<strong>Theory B</strong>: there <strong>are</strong> these registers on my machine as well, but gcc compiled the program in such a way, that it uses rip instead of eip and rbp instead of ebp. <strong>Theory C</strong>: since I broke at the beginning of a function, not inside it, eip and ebp are not yet used; rip and rbp serve some other purpose in this case.)</li>
<li>(Assuming my main theory is correct): is it the case that newer machines have eip/ebp instead of rbp/rip, or do newer machines have both sets of registers, and older ones only rbp/rip?</li>
<li>If <code>info registers</code> in gdb does not show a register, does that mean that that register does not exist on the machine, or that it might exist, but is not used in the context of the debugged program? (Based on <a href="http://visualgdb.com/gdbreference/commands/info_registers" rel="nofollow noreferrer">GDB documentation</a>, I would suppose the former.)</li>
</ol>
<h2>Background</h2>
<p>I am trying to do <a href="https://exploit-exercises.com/protostar/stack4/" rel="nofollow noreferrer">this exercise</a>, whose main point is:</p>
<blockquote>
<p>Stack4 takes a look at overwriting saved EIP and standard buffer
overflows.</p>
</blockquote>
<p>So the main question would be: <strong>should I go for rip instead of eip in this case</strong>? (However, besides answering this point, I would like to have a better understanding of the background in general, therefore the above, more detailed questions.)</p>