Ok, I just stripped 90% of your post. Why did I do that? Because posting masses of code is a clear indication that you couldn't be bothered to find out the actual cause of your problem, and because it's a copy of
Higher Half With GDT - Something you could have mentioned instead. Similarly, you've been slacking off even at that for not posting mount.sh and kernel.ld. So far, you didn't seem to have read the forum rules.
The next thing that I found interesting is that your makefile calls ld explicitly, and your host's gcc implicitly. That's a known error as per the
Posting Checklist, and I wouldn't be surprised that eclipse's gdb (your host's debugger) refuses to work for the exact same reason as why you shouldn't be using your host compiler for something other than linux. The reason why you're making two different binaries is beyond me as well. So, you missed the FAQ and failed basic sanity checks.
So the real problem is that gdb does not do what you expect. What evidence do you have for that? Is it eclipse's fault or is it gdb's fault?