Date: Fri, 8 Sep 2017 13:36:52 -0400 From: John Baldwin <jhb@FreeBSD.org> To: arch@freebsd.org Subject: ELF auxiliary vector tags Message-ID: <ecca895d-2553-f2bf-4a44-5e379c07a9d4@FreeBSD.org>
next in thread | raw e-mail | index | archive | help
Currently, each architecture defines a list of auxiliary vector tag values (AT_*) in the respective <machine/elf.h>. Most of these lists are identical except that powerpc is missing AT_GID and AT_EGID and all the of the vectors after those two are thus N-2 on powerpc compared to all our other architectures. I noticed this while working on patches to add AT_HWCAP for ARM which debuggers can use to determine the layout of VFP registers (and which might have other uses at runtime). I'd like to move AT_* to sys/elf_common.h to have a single list across all platforms (the auxv parsing code in GDB for FreeBSD already assumes the list of AT_* values is identical across all platforms on FreeBSD). However, it would be convenient it powerpc could be updated to use the same values as all other platforms. This would probably be a flag day for powerpc (breaking all existing binaries) if we did it though, so I'm not sure if we can do that? I know Justin changed time_t to 64-bit on 32-bit powerpc which effectively broke 32-bit powerpc earlier, but this change would break both 32-bit and 64-bit powerpc and is probably more disruptive (in theory some binaries might have worked with a wrong time_t, but renumber AT_STACKPROT, etc. will probably break every binary). Does anyone object to making AT_* MI, and if not, can we "break" powerpc or do we need to preserve the AT_* values on powerpc? -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?ecca895d-2553-f2bf-4a44-5e379c07a9d4>