diff mbox

elf.h: Add section compression constants and structures.

Message ID 1430490987-7174-1-git-send-email-mjw@redhat.com
State New
Headers show

Commit Message

Mark Wielaard May 1, 2015, 2:36 p.m. UTC
Hi,

This adds the new gabi standardized ELF section compression constants
and structures. This is currently being implemented in the binutils
linkers and support in Solaris and elfutils libelf is being discussed
here: https://groups.google.com/forum/#!topic/generic-abi/9ZgNqIC2X-4

If this looks OK could someone push this for me, I don't have glibc
commit access.

Thanks,

Mark

ChangeLog

2015-05-01  Mark Wielaard  <mjw@redhat.com>

	* elf/elf.h: Add SHF_COMPRESSED section flag, Elf32_Chdr and
	Elf64_Chdr structs and ELFCOMPRESS constants.

---
 ChangeLog |  5 +++++
 elf/elf.h | 25 +++++++++++++++++++++++++
 2 files changed, 30 insertions(+)

Comments

Roland McGrath May 1, 2015, 4:21 p.m. UTC | #1
It looks fine to me.  

This isn't your first glibc change and I know you are competent to follow
our conventions.  So you won't get out of doing your own commits any more!
I've requested that you be added to the glibc group.


Thanks,
Roland
Mark Wielaard May 1, 2015, 8:54 p.m. UTC | #2
On Fri, May 01, 2015 at 09:21:08AM -0700, Roland McGrath wrote:
> It looks fine to me.  
> 
> This isn't your first glibc change and I know you are competent to follow
> our conventions.  So you won't get out of doing your own commits any more!
> I've requested that you be added to the glibc group.

Thanks. I pushed the patch after making sure make check showed no new FAILs.

Cheers,

Mark
diff mbox

Patch

diff --git a/elf/elf.h b/elf/elf.h
index 39bafc2..12feb91 100644
--- a/elf/elf.h
+++ b/elf/elf.h
@@ -367,6 +367,7 @@  typedef struct
 					   required */
 #define SHF_GROUP	     (1 << 9)	/* Section is member of a group.  */
 #define SHF_TLS		     (1 << 10)	/* Section hold thread-local data.  */
+#define SHF_COMPRESSED	     (1 << 11)	/* Section with compressed data. */
 #define SHF_MASKOS	     0x0ff00000	/* OS-specific.  */
 #define SHF_MASKPROC	     0xf0000000	/* Processor-specific */
 #define SHF_ORDERED	     (1 << 30)	/* Special ordering requirement
@@ -374,6 +375,30 @@  typedef struct
 #define SHF_EXCLUDE	     (1U << 31)	/* Section is excluded unless
 					   referenced or allocated (Solaris).*/
 
+/* Section compression header.  Used when SHF_COMPRESSED is set.  */
+
+typedef struct
+{
+  Elf32_Word	ch_type;	/* Compression format.  */
+  Elf32_Word	ch_size;	/* Uncompressed data size.  */
+  Elf32_Word	ch_addralign;	/* Uncompressed data alignment.  */
+} Elf32_Chdr;
+
+typedef struct
+{
+  Elf64_Word	ch_type;	/* Compression format.  */
+  Elf64_Word	ch_reserved;
+  Elf64_Xword	ch_size;	/* Uncompressed data size.  */
+  Elf64_Xword	ch_addralign;	/* Uncompressed data alignment.  */
+} Elf64_Chdr;
+
+/* Legal values for ch_type (compression algorithm).  */
+#define ELFCOMPRESS_ZLIB	1	   /* ZLIB/DEFLATE algorithm.  */
+#define ELFCOMPRESS_LOOS	0x60000000 /* Start of OS-specific.  */
+#define ELFCOMPRESS_HIOS	0x6fffffff /* End of OS-specific.  */
+#define ELFCOMPRESS_LOPROC	0x70000000 /* Start of processor-specific.  */
+#define ELFCOMPRESS_HIPROC	0x7fffffff /* End of processor-specific.  */
+
 /* Section group handling.  */
 #define GRP_COMDAT	0x1		/* Mark group as COMDAT.  */