2

By using Intel's pin, I printed out the instruction pointer (ip) values for a program with dynamic linking and static linking.

And I've found that their ip values are quite different, even though they are the same program.

A program with static linking shows 0x400f50 for its very first ip value.

but a program with dynamic linking shows 0x7f94f0762090 for its first ip value

I am not sure why they have that quite a large gap.

It would be appreciated if anyone could help me find out the reason

Tae
  • 125
  • 5

1 Answers1

2

I am not sure why they have that quite a large gap.

Because a dynamically linked program does not start executing in the binary: the first few thousands of instructions are executed in the dynamic linker (ld-linux), before control is transferred to _start in the main executable.

See also this answer.

Employed Russian
  • 199,314
  • 34
  • 295
  • 362