Skip to contentSkip to conversation

ELF: what should be part of the userspace headers?

DISCUSSION Adrian Bunk 3 participants 4 messages Aug 5, 2006 – Aug 13, 2006

lore
Share & tools
lore
#0 lore raw

I'm currently a bit lost trying to understand what from the following headers is part of the kernel <-> userspace ABI:
include/asm/elf.h
include/linux/elfcore.h
include/linux/elf-em.h
include/linux/elf-fdpic.h
include/linux/elf.h

include/linux/elf-em.h is used by include/linux/audit.h, but this usage doesn't seem to be part of the kernel <-> userspace interface?

And which part of the ELF headers is part of the kernel <-> userspace interface?

TIA
Adrian

Signature · 6 lines
    Gentoo kernels are 42 times more popular than SUSE kernels among
    KLive users  (a service by SUSE contractor Andrea Arcangeli that
    gathers data about kernels from many users worldwide).

       There are three kinds of lies: Lies, Damn Lies, and Statistics.
                                                    Benjamin Disraeli
#1 lore raw
Quoted 2 lines · Adrian Bunk

include/linux/elf-em.h is used by include/linux/audit.h, but this usage doesn't seem to be part of the kernel <-> userspace interface?

The machine types _are_ part of the audit kernel<->userspace interface, I think. Exporting elf-em.h should be fairly harmless.

Quoted 2 lines

And which part of the ELF headers is part of the kernel <-> userspace interface?

Almost none of them, I'd suggest. Nothing but auxvec.h

Signature · 1 line
dwmw2
#2 lore raw
Quoted 11 lines · David Woodhouse
Quoted 2 lines · Adrian Bunk

include/linux/elf-em.h is used by include/linux/audit.h, but this usage doesn't seem to be part of the kernel <-> userspace interface?

The machine types _are_ part of the audit kernel<->userspace interface, I think. Exporting elf-em.h should be fairly harmless.

Quoted 2 lines

And which part of the ELF headers is part of the kernel <-> userspace interface?

Almost none of them, I'd suggest. Nothing but auxvec.h

Well, sys/procfs.h on several arches includes <asm/elf.h>:

find -type f -a -name \*.h | xargs grep '<\(asm\|linux\).*elf' ./sysdeps/unix/sysv/linux/alpha/sys/procfs.h:#include <asm/elf.h> ./sysdeps/unix/sysv/linux/sh/sys/procfs.h:#include <asm/elf.h> ./sysdeps/unix/sysv/linux/sys/procfs.h:#include <asm/elf.h>

while most other arches don't need it:
for i in find . -name procfs.h; do grep -q '<\(asm\|linux\).*elf' $i || echo $i; done ./sysdeps/unix/sysv/linux/s390/sys/procfs.h ./sysdeps/unix/sysv/linux/powerpc/sys/procfs.h ./sysdeps/unix/sysv/linux/sparc/sys/procfs.h ./sysdeps/unix/sysv/linux/i386/sys/procfs.h ./sysdeps/unix/sysv/linux/ia64/sys/procfs.h ./sysdeps/unix/sysv/linux/x86_64/sys/procfs.h

Guess it shouldn't be hard to convert even alpha and sh (not sure then if there are any arches that actually use the linux/sys/procfs.h header).

Jakub

#3 lore raw
Quoted 29 lines · Jakub Jelinek
Quoted 11 lines · David Woodhouse
Quoted 2 lines · Adrian Bunk

include/linux/elf-em.h is used by include/linux/audit.h, but this usage doesn't seem to be part of the kernel <-> userspace interface?

The machine types _are_ part of the audit kernel<->userspace interface, I think. Exporting elf-em.h should be fairly harmless.

Quoted 2 lines

And which part of the ELF headers is part of the kernel <-> userspace interface?

Almost none of them, I'd suggest. Nothing but auxvec.h

Well, sys/procfs.h on several arches includes <asm/elf.h>:

find -type f -a -name \*.h | xargs grep '<\(asm\|linux\).*elf' ./sysdeps/unix/sysv/linux/alpha/sys/procfs.h:#include <asm/elf.h> ./sysdeps/unix/sysv/linux/sh/sys/procfs.h:#include <asm/elf.h> ./sysdeps/unix/sysv/linux/sys/procfs.h:#include <asm/elf.h>

while most other arches don't need it:
for i in find . -name procfs.h; do grep -q '<\(asm\|linux\).*elf' $i || echo $i; done ./sysdeps/unix/sysv/linux/s390/sys/procfs.h ./sysdeps/unix/sysv/linux/powerpc/sys/procfs.h ./sysdeps/unix/sysv/linux/sparc/sys/procfs.h ./sysdeps/unix/sysv/linux/i386/sys/procfs.h ./sysdeps/unix/sysv/linux/ia64/sys/procfs.h ./sysdeps/unix/sysv/linux/x86_64/sys/procfs.h

Quoted 2 lines

Guess it shouldn't be hard to convert even alpha and sh (not sure then if there are any arches that actually use the linux/sys/procfs.h header).

Thanks for this, I grepped only on i386.

Let me try to put it into two questions:
- What should be exported to userspace as part of the kernel<->userspace interface?
- What has to be exported (at least for some time) for not breaking existing userspace code?

Your answer was for the second question.

But even more important is the first question.

Quoted 1 line

Jakub

cu
Adrian

Signature · 6 lines
    Gentoo kernels are 42 times more popular than SUSE kernels among
    KLive users  (a service by SUSE contractor Andrea Arcangeli that
    gathers data about kernels from many users worldwide).

       There are three kinds of lies: Lies, Damn Lies, and Statistics.
                                                    Benjamin Disraeli