Author: kaiw
Date: Wed Jul 21 09:56:42 2010
New Revision: 210332
URL: http://svn.freebsd.org/changeset/base/210332

Log:
  Changes for supporting GNU Hash sections.
  
  Obtained from:        elftoolchain
  MFC after:            1 month

Modified:
  head/lib/libelf/libelf_align.c
  head/lib/libelf/libelf_fsize.m4
  head/lib/libelf/libelf_msize.m4

Modified: head/lib/libelf/libelf_align.c
==============================================================================
--- head/lib/libelf/libelf_align.c      Wed Jul 21 09:51:24 2010        
(r210331)
+++ head/lib/libelf/libelf_align.c      Wed Jul 21 09:56:42 2010        
(r210332)
@@ -51,6 +51,10 @@ struct align {
                .a32 = 0,                                       \
                .a64 = __alignof__(Elf64_##V)                   \
        }
+#define        MALIGN_WORD()   {                                       \
+               .a32 = __alignof__(int32_t),                    \
+               .a64 = __alignof__(int64_t)                     \
+           }
 #else
 #error Need the __alignof__ builtin.
 #endif
@@ -92,7 +96,10 @@ static struct align malign[ELF_T_NUM] = 
        [ELF_T_VNEED]   = MALIGN(Verneed),
 #endif
        [ELF_T_WORD]    = MALIGN(Word),
-       [ELF_T_XWORD]   = MALIGN64(Xword)
+       [ELF_T_XWORD]   = MALIGN64(Xword),
+#if    __FreeBSD_version >= 800062
+       [ELF_T_GNUHASH] = MALIGN_WORD()
+#endif
 };
 
 int
@@ -140,7 +147,10 @@ static struct align falign[ELF_T_NUM] = 
        [ELF_T_VNEED]   = FALIGN(4,4),
 #endif
        [ELF_T_WORD]    = FALIGN(4,4),
-       [ELF_T_XWORD]   = FALIGN(0,8)
+       [ELF_T_XWORD]   = FALIGN(0,8),
+#if    __FreeBSD_version >= 800062
+       [ELF_T_GNUHASH] = FALIGN(4,8)
+#endif
 };
 
 int

Modified: head/lib/libelf/libelf_fsize.m4
==============================================================================
--- head/lib/libelf/libelf_fsize.m4     Wed Jul 21 09:51:24 2010        
(r210331)
+++ head/lib/libelf/libelf_fsize.m4     Wed Jul 21 09:56:42 2010        
(r210332)
@@ -45,6 +45,7 @@ include(SRCDIR`/elf_types.m4')
 
 /* `Basic' types */
 define(`BYTE_SIZE',    1)
+define(`GNUHASH_SIZE', 1) /* Elf_GNU_Hash_Header structures vary in length. */
 define(`IDENT_SIZE',   `EI_NIDENT')
 define(`NOTE_SIZE',    1) /* Elf_Note structures have variable length. */
 

Modified: head/lib/libelf/libelf_msize.m4
==============================================================================
--- head/lib/libelf/libelf_msize.m4     Wed Jul 21 09:51:24 2010        
(r210331)
+++ head/lib/libelf/libelf_msize.m4     Wed Jul 21 09:56:42 2010        
(r210332)
@@ -49,6 +49,7 @@ divert(-1)
 include(SRCDIR`/elf_types.m4')
 
 define(BYTE_SIZE,      1)
+define(GNUHASH_SIZE,   1)
 define(NOTE_SIZE,      1)
 
 /*
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to