On Tue, Aug 29, 2023 at 03:27:16PM +0200, Alejandro Colomar wrote: > > It was introduced before git, so trawling through linux-fullhistory .... > > > diff --git a/include/linux/elf.h b/include/linux/elf.h > -typedef struct dynamic{ > -- > diff --git a/include/uapi/linux/elf.h b/include/uapi/linux/elf.h > +typedef struct dynamic{ > > > Hmm, I thought that commit was the one that moved it from an internal header > to a UAPI one. I didn't know include/linux/elf.h was a public header long ago. Ooh, story time! Long, long ago, we did not separate "Linux headers" from "libc headers". It used to be somebody's job to take the files in /usr/src/linux/include/linux and copy them to /usr/include/linux. Bold people used a symlink. People who cared about things like "Well, POSIX says that" would edit the files after copying them to remove things that POSIX said shouldn't be there or put _GNU_SOURCE markers around them. At some point, we decided to split the headers to create the uapi headers to make this job easier. Refinements are, of course, possible, and now easier than ever, but I think it's fair to say that anybody who included <linux/elf.h> at any time in history got given a struct dynamic. > Might be true. But since it's a compile-time failure, it's not going to > cause silent bugs. If there was a real regression, it would be trivial to > detect and fix, so maybe it's a risk that can be taken. But yeah, your > concern may vary. :) Well, it's a compile-time failure either way. Code that depended on it is compiling happily today, and the code that would want to use it doesn't exist yet, so I'd rather err on the side of keeping code written in the last 30 years working.