Re: [GIT PULL] x86/kaslr for v3.14

From: Ingo Molnar
Date: Tue Jan 28 2014 - 14:48:35 EST



* Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:

> On Tue, Jan 28, 2014 at 9:05 AM, Ingo Molnar <mingo@xxxxxxxxxx> wrote:
> >
> > Well, I often use the hex numbers to look them up and disassemble them
> > in a vmlinux via gdb and 'list *0x1234123412341234' - where the
> > vmlinux has no debuginfo. (Debuginfo takes longer to build so I
> > generally build without it.)
>
> Why the heck wouldn't you do that? Just do
>
> list schedule+0x45
>
> instead.
>
> > AFAICS this won't work in a symbol-less vmlinux. Is there some trick
> > to do it with gdb?
>
> Why would you have a symbol-less vmlinux? The only reason to strip
> vmlinux is because you were crazy enough to build with

I don't think I ever stripped a vmlinux in my life, and I definitely
didn't strip this one:

phoenix:~/linux/linux> file vmlinux
vmlinux: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=0x239d56b40bb654ddd2dd704e6b585d5c90de4e12, not stripped

> CONFIG_DEBUG_INFO and the damn debug info is so large that it won't
> fit on your root partition. But dammit, if you build with debug_info
> and then strip the end result, you're just insane. [...]

So, to quote myself from 2 sentences ago:

> > vmlinux has no debuginfo. (Debuginfo takes longer to build so I
> > generally build without it.)

I really meant it when I said I build without debuginfo! :)

So, when I build a kernel, such as with a regular 'make defconfig',
the following happens in gdb:

Reading symbols from /home/mingo/tip/vmlinux...(no debugging symbols found)...done.
(gdb) list schedule+0x45
No symbol table is loaded. Use the "file" command.

Is there a way to resolve schedule+0x45 in a regular vmlinux? It was
an honest question.

> [...] You made your build take ten times longer, use ten times more
> diskspace, and then you throw it all away. Crazy.

It's so crazy that I in fact try to force off debuginfo for all my
builds, even randconfig ones:

config DEBUG_INFO
bool "Compile the kernel with debug info"
depends on DEBUG_KERNEL
# too slow build in QA
depends on 0

> So I don't think the symbol-less version is worth even worrying
> about. You do want to build with KALLSYMS (or whatever the config
> option is called), so that the symbolic name is worth something, but
> once you have the symbolc name, you're good unless you did something
> terminally stupid.

Hm, I have kallsyms on - it's a regular 'make defconfig':

phoenix:~/linux/linux> grep KALL .config
CONFIG_KALLSYMS=y

I might be doing something terminally stupid.

> Btw, we should make it harder to enable CONFIG_DEBUG_INFO. [...]

It's really not set:

phoenix:~/linux/linux> grep DEBUG_INFO .config
# CONFIG_DEBUG_INFO is not set

> [...] It's a f*cking pain. It's particularly nasty when you do "make
> allmodconfig" and it enables debug-info and makes the build take
> forever and waste diskspace - but nobody sane actually *boots* the
> end result, so that debug info is all pointless.

I actually boot (almost-)allmod and allyesconfigs - still I disable
DEBUG_INFO because it's such a strain on our planet's climate.

Thanks,

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/