summaryrefslogtreecommitdiff
path: root/dev-libs/libmelf
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /dev-libs/libmelf
reinit the tree, so we can have metadata
Diffstat (limited to 'dev-libs/libmelf')
-rw-r--r--dev-libs/libmelf/Manifest8
-rw-r--r--dev-libs/libmelf/files/libmelf-0.4.0-gcc-makefile-cleanup.patch129
-rw-r--r--dev-libs/libmelf/files/libmelf-0.4.0-r1-gcc-makefile-cleanup.patch105
-rw-r--r--dev-libs/libmelf/files/libmelf-0.4.1-unfinal-release.patch145
-rw-r--r--dev-libs/libmelf/libmelf-0.4.0-r1.ebuild40
-rw-r--r--dev-libs/libmelf/metadata.xml8
6 files changed, 435 insertions, 0 deletions
diff --git a/dev-libs/libmelf/Manifest b/dev-libs/libmelf/Manifest
new file mode 100644
index 000000000000..cdd534664c61
--- /dev/null
+++ b/dev-libs/libmelf/Manifest
@@ -0,0 +1,8 @@
+AUX libmelf-0.4.0-gcc-makefile-cleanup.patch 4079 SHA256 656cece4da2d88055db265923d631d1994aff5b01c59551fbf58fb846cf614f8 SHA512 b227866d63c522d9256c4e47ea114f162e0c6049e40366bc128b22efb75172a43b1364d237968f9bd1f2ef3681ac098be714e4b2aa5e92161e27125ae8b2e405 WHIRLPOOL d3cf91b7b0f1e52602f00cbe819fdff6ce5eb2aa92dc90dfa367478c61092f41b348a09667a81967d25fe120e4070586e2b7636390f4dbfbb5ebb294af1bcd7f
+AUX libmelf-0.4.0-r1-gcc-makefile-cleanup.patch 3132 SHA256 a5b7955879c72edcb6c57943927f2ab738fd62a403b2fa4e83b5ccbd9ec73535 SHA512 c68e718e9e49c636be58028a03d53d81998e5cb9b8940c2c431f93acc77019be0a58486c0f7663241bd5d281f7638897a5baeca953e504c885c8dd6aea0c2fe4 WHIRLPOOL c0fd4c88c6750667edbf6c6665303191bee1b607808768bdaab5e00b80b4662dfd8171db7aa21dcb939ef186406fb367ad61332111baa4bf32719b95a2752ae0
+AUX libmelf-0.4.1-unfinal-release.patch 5246 SHA256 030cb76d083e90cb0b0680631b69d5b01da99dda8e3d91efa5e063ac1e9c7068 SHA512 4d828c626e7b9f9399bd0bfe6428970995d2b386cb60ebf80ba68be67dae23a1671ed4cf766675e17d72d5d4e4b9265ae99dd40c022c20cf233b237f88ab94ec WHIRLPOOL 58d9eeb860e8efa7836d6f08a500d893aa189360519871ad31b9a8b6bc48dd8998b2371a255e8293a1924150ca31833657f701579a81d6cc1f0eec5aa982980b
+DIST libmelf-0.4.0.tar.gz 163173 SHA256 f0820cec3b4338b4441743fc74d183fd28ad4e405e90d99c1dc01cf787ff0246 SHA512 c702c72026f494b0d3ee665d6734cbd302c002c904721c0b58f71850f20c3249e5cabca4fcc5ecfe0a4e114df2e31c6faed84634ad593ff61de2e5acffd70227 WHIRLPOOL 79f547661c8373122314f03803a737baf3ec3bdf4634c3d0a521ec6b0646351777183a9bd7b6104bf6cb55dd2e73fb65876e52b7ee677757c43d80198b7d637f
+EBUILD libmelf-0.4.0-r1.ebuild 938 SHA256 62920252ffd5e01726360b9b9b0863ccf136d0fa43e39d97c51e0b2ecc9b77e4 SHA512 200583eeca05cabb3b1b58390dffaeb8389e8938f908848ca17e84dbc8fbd56460e6ce7d32639cc50bc833dd21001b40634a3459999a031070967cfc0f7421fc WHIRLPOOL fcf4cae14fd5410cd737da83ad9e610f9352179a4afa2a7290eae42afab221eb9b33dac0fa5a808e8f348910738f71aef56f212eda2e07ca9f9b574648e408a0
+MISC ChangeLog 2385 SHA256 b2179e0db56d79afe806097a69d1827a4c3664a791ee3c831be064705353a70c SHA512 a52b90e0136a2d24d18a05dc8a1323fbcdbe72dabcc4e95a22cacec71b13c9ff5146a7bdc1cc52d2ffe0e3fe6181edf7ed5c3a63e3ca50cac722aae0d0f0b978 WHIRLPOOL 0d0dd6754a432bb206c7a7d9292c0e771a1c33d3303109b7e736dfe89ec9feaa2c92305565687cdfd47004857bf444cb15f479a5e6e8dc37204ddf095008d497
+MISC ChangeLog-2015 1060 SHA256 3d856fe509abd373a05c684ef58b4aeb7be14b79f1ddf1e9d7cc93cc11e5b146 SHA512 eea6a4af36980db2a302ec9f39e990caefa593553a94f807225569d0d4150c595ad988059db5e98255d538911cc03643240567b79b17f9ae52a37ff87b293d9a WHIRLPOOL 65fafc1fc91d33b53ee78106ba5f10094eb553ad81eec97fde1e7614f10c9b6f5b7141132ba550cc7e6c3d466b3b53e76f119d353ef5a9e15ef0da41ecf47561
+MISC metadata.xml 268 SHA256 972faf76e6638f2159ef3c7dafdcfef26d582070e6f0064d9136d1c6b2bee905 SHA512 ffda1db3fd6ac952f41a970e2e496c6a9fd0b12ed11cdf363fd269c3b00f627c6e70421fd545aad61d69594af2e5f43d8ebc197232a39b596d012818fe758850 WHIRLPOOL 759c32dcdde671d2fda0269ee9326f6d0f0e44966f767ac7becc40e6efb5429237b683cb23867d76a8d13dde79fe257e090ef890761b20f9792172a90369296d
diff --git a/dev-libs/libmelf/files/libmelf-0.4.0-gcc-makefile-cleanup.patch b/dev-libs/libmelf/files/libmelf-0.4.0-gcc-makefile-cleanup.patch
new file mode 100644
index 000000000000..ddf7c8a1ca03
--- /dev/null
+++ b/dev-libs/libmelf/files/libmelf-0.4.0-gcc-makefile-cleanup.patch
@@ -0,0 +1,129 @@
+diff -Nuar --exclude '*~' libmelf-0.4.0.orig/example/Makefile.in libmelf-0.4.0/example/Makefile.in
+--- libmelf-0.4.0.orig/example/Makefile.in 2003-03-24 00:48:22.000000000 -0800
++++ libmelf-0.4.0/example/Makefile.in 2010-05-31 19:56:43.546947560 -0700
+@@ -1,7 +1,13 @@
+ cc=@CC@
+ DEFINES=@DEFINES@
++OPTFLAGS=-Wall -O3
++CFLAGS=${DEFINES} ${OPTFLAGS} -I..
++BINS = sign test new
+
+-all:
+- ${CC} ${DEFINES} -I.. -Wall -O3 sign.c -o sign ../libmelf.a
+- ${CC} ${DEFINES} -I.. -Wall -O3 test.c -o test ../libmelf.a
+- ${CC} ${DEFINES} -I.. -Wall -O3 new.c -o new ../libmelf.a
++%: %.c
++ ${CC} $(CFLAGS) $^ -o $@ -L.. -lmelf
++
++all: $(BINS)
++
++clean:
++ -rm -f $(BINS)
+diff -Nuar --exclude '*~' libmelf-0.4.0.orig/Makefile.in libmelf-0.4.0/Makefile.in
+--- libmelf-0.4.0.orig/Makefile.in 2003-11-07 22:09:10.000000000 -0800
++++ libmelf-0.4.0/Makefile.in 2010-05-31 19:58:12.172822406 -0700
+@@ -6,35 +6,43 @@
+ DEFINES=@DEFINES@ -DMELF_COMP
+ INCLUDES=-I.
+ PREFIX=@PREFIX@
+-CFLAGS=${DEBUG} ${DEFINES} ${INCLUDES} -Wall -O3
+-LFLAGS=${DEBUG} ${DEFINES} ${INCLUDES} -Wall -O3 -o
++OPTFLAGS=-Wall -O3
++CFLAGS=${DEBUG} ${DEFINES} ${INCLUDES} ${OPTFLAGS}
++LFLAGS=${DEBUG} ${DEFINES} ${INCLUDES} ${OPTFLAGS} -o
++LIBDIR=lib
+ LIBS=
+ OBJS=melf.o melf_dynamic.o melf_elf.o melf_list.o melf_note.o melf_program.o melf_reloc.o \
+ melf_res.o melf_section.o melf_string.o melf_symbol.o melf_symbolTable.o
+
+-all: ${OBJS}
+- ar rc ${STATICBIN} ${OBJS} && ranlib ${STATICBIN}
+- @SHAREDEXEC@
+- cd example && make
+- cd tools && make
++all: ${STATICBIN} ${DYNAMICBIN}
++ cd example && $(MAKE)
++ cd tools && $(MAKE)
+
+ *.c.${O}:
+ ${CC} ${CFLAGS} $*.c
+
++${STATICBIN}: ${OBJS}
++ ar rc ${STATICBIN} ${OBJS} && ranlib ${STATICBIN}
++${DYNAMICBIN}: ${OBJS}
++ @SHAREDEXEC@
++
+ clean:
+ rm -f *.o ${STATICBIN} ${DYNAMICBIN} example/test example/new example/sign tools/elfres config.*
+- cd tools && make clean
++ cd tools && $(MAKE) clean
+
+-distclean:
+- make clean
++distclean: clean
+ rm -f Makefile example/Makefile stdelf.h
+- cd tools && make distclean
++ cd tools && $(MAKE) distclean
+
+ install: ${OBJS} ${STATICBIN}
+- cp libmelf.a ${PREFIX}/lib
+- cp libmelf.so ${PREFIX}/lib
++ cp ${STATICBIN} ${PREFIX}/$(LIBDIR)
++ cp ${DYNAMICBIN} ${PREFIX}/$(LIBDIR)
+ cp melf.h ${PREFIX}/include
+ cp stdelf.h ${PREFIX}/include
+
+ uninstall:
+- rm -f ${PREFIX}/lib/libmelf.a ${PREFIX}/lib/libmelf.so ${PREFIX}/include/melf.h ${PREFIX}/include/stdelf.h
++ -rm -f \
++ ${PREFIX}/$(LIBDIR)/${STATICBIN} \
++ ${PREFIX}/$(LIBDIR)/${DYNAMICBIN} \
++ ${PREFIX}/include/melf.h \
++ ${PREFIX}/include/stdelf.h
+diff -Nuar --exclude '*~' libmelf-0.4.0.orig/melf_dynamic.c libmelf-0.4.0/melf_dynamic.c
+--- libmelf-0.4.0.orig/melf_dynamic.c 2004-01-08 23:25:32.000000000 -0800
++++ libmelf-0.4.0/melf_dynamic.c 2010-05-31 19:35:59.230823053 -0700
+@@ -227,7 +227,7 @@
+ return NULL;
+
+ dynamic->content = (void *)base;
+- (unsigned char *)base += dynamic->contentLength;
++ /*(unsigned char *)*/ base += dynamic->contentLength;
+ dynamic->contentLength = newLength;
+
+ base->d_tag = DT_NULL;
+diff -Nuar --exclude '*~' libmelf-0.4.0.orig/melf_note.c libmelf-0.4.0/melf_note.c
+--- libmelf-0.4.0.orig/melf_note.c 2004-01-08 23:25:56.000000000 -0800
++++ libmelf-0.4.0/melf_note.c 2010-05-31 19:36:11.535947632 -0700
+@@ -205,7 +205,7 @@
+ return NULL;
+
+ note->content = (void *)base;
+- (unsigned char *)base += note->contentLength;
++ /*(unsigned char *)*/ base += note->contentLength;
+
+ memset(base, 0, newLength - note->contentLength);
+
+diff -Nuar --exclude '*~' libmelf-0.4.0.orig/tools/Makefile.in libmelf-0.4.0/tools/Makefile.in
+--- libmelf-0.4.0.orig/tools/Makefile.in 2003-09-17 01:03:49.000000000 -0700
++++ libmelf-0.4.0/tools/Makefile.in 2010-05-31 19:57:55.126198024 -0700
+@@ -1,11 +1,15 @@
+ cc=@CC@
+ DEFINES=@DEFINES@
++CFLAGS=${DEFINES} ${OPTFLAGS} -I..
++BINS=elfres
+
+-all:
+- ${CC} ${DEFINES} -I.. -Wall -O3 elfres.c -o elfres ../libmelf.a
++%: %.c
++ ${CC} $(CFLAGS) $^ -o $@ -L.. -lmelf
++
++all: $(BINS)
+
+ clean:
+- rm -f elfres
++ -rm -f $(BINS)
+
+ distclean:
+- rm -f elfres Makefile
++ -rm -f $(BINS) Makefile
diff --git a/dev-libs/libmelf/files/libmelf-0.4.0-r1-gcc-makefile-cleanup.patch b/dev-libs/libmelf/files/libmelf-0.4.0-r1-gcc-makefile-cleanup.patch
new file mode 100644
index 000000000000..384818f57630
--- /dev/null
+++ b/dev-libs/libmelf/files/libmelf-0.4.0-r1-gcc-makefile-cleanup.patch
@@ -0,0 +1,105 @@
+diff -Nuar --exclude '*~' libmelf-0.4.0.orig/example/Makefile.in libmelf-0.4.0/example/Makefile.in
+--- libmelf-0.4.0.orig/example/Makefile.in 2003-03-24 00:48:22.000000000 -0800
++++ libmelf-0.4.0/example/Makefile.in 2010-05-31 19:56:43.546947560 -0700
+@@ -1,7 +1,13 @@
+ cc=@CC@
+ DEFINES=@DEFINES@
++OPTFLAGS=-Wall -O3
++CFLAGS=${DEFINES} ${OPTFLAGS} -I..
++BINS = sign test new
+
+-all:
+- ${CC} ${DEFINES} -I.. -Wall -O3 sign.c -o sign ../libmelf.a
+- ${CC} ${DEFINES} -I.. -Wall -O3 test.c -o test ../libmelf.a
+- ${CC} ${DEFINES} -I.. -Wall -O3 new.c -o new ../libmelf.a
++%: %.c
++ ${CC} $(CFLAGS) $^ -o $@ -L.. -lmelf
++
++all: $(BINS)
++
++clean:
++ -rm -f $(BINS)
+diff -Nuar --exclude '*~' libmelf-0.4.0.orig/Makefile.in libmelf-0.4.0/Makefile.in
+--- libmelf-0.4.0.orig/Makefile.in 2003-11-07 22:09:10.000000000 -0800
++++ libmelf-0.4.0/Makefile.in 2010-05-31 19:58:12.172822406 -0700
+@@ -6,35 +6,43 @@
+ DEFINES=@DEFINES@ -DMELF_COMP
+ INCLUDES=-I.
+ PREFIX=@PREFIX@
+-CFLAGS=${DEBUG} ${DEFINES} ${INCLUDES} -Wall -O3 -fPIC
+-LFLAGS=${DEBUG} ${DEFINES} ${INCLUDES} -Wall -O3 -o
++OPTFLAGS=-Wall -O3
++CFLAGS=${DEBUG} ${DEFINES} ${INCLUDES} ${OPTFLAGS}
++LFLAGS=${DEBUG} ${DEFINES} ${INCLUDES} ${OPTFLAGS} -o
++LIBDIR=lib
+ LIBS=
+ OBJS=melf.o melf_dynamic.o melf_elf.o melf_list.o melf_note.o melf_program.o melf_reloc.o \
+ melf_res.o melf_section.o melf_string.o melf_symbol.o melf_symbolTable.o
+
+-all: ${OBJS}
+- ar rc ${STATICBIN} ${OBJS} && ranlib ${STATICBIN}
+- @SHAREDEXEC@
+- cd example && make
+- cd tools && make
++all: ${STATICBIN} ${DYNAMICBIN}
++ cd example && $(MAKE)
++ cd tools && $(MAKE)
+
+ *.c.${O}:
+ ${CC} ${CFLAGS} $*.c
+
++${STATICBIN}: ${OBJS}
++ ar rc ${STATICBIN} ${OBJS} && ranlib ${STATICBIN}
++${DYNAMICBIN}: ${OBJS}
++ @SHAREDEXEC@
++
+ clean:
+ rm -f *.o ${STATICBIN} ${DYNAMICBIN} example/test example/new example/sign tools/elfres config.*
+- cd tools && make clean
++ cd tools && $(MAKE) clean
+
+-distclean:
+- make clean
++distclean: clean
+ rm -f Makefile example/Makefile stdelf.h
+- cd tools && make distclean
++ cd tools && $(MAKE) distclean
+
+ install: ${OBJS} ${STATICBIN}
+- cp libmelf.a ${PREFIX}/lib
+- cp libmelf.so ${PREFIX}/lib
++ cp ${STATICBIN} ${PREFIX}/$(LIBDIR)
++ cp ${DYNAMICBIN} ${PREFIX}/$(LIBDIR)
+ cp melf.h ${PREFIX}/include
+ cp stdelf.h ${PREFIX}/include
+
+ uninstall:
+- rm -f ${PREFIX}/lib/libmelf.a ${PREFIX}/lib/libmelf.so ${PREFIX}/include/melf.h ${PREFIX}/include/stdelf.h
++ -rm -f \
++ ${PREFIX}/$(LIBDIR)/${STATICBIN} \
++ ${PREFIX}/$(LIBDIR)/${DYNAMICBIN} \
++ ${PREFIX}/include/melf.h \
++ ${PREFIX}/include/stdelf.h
+diff -Nuar --exclude '*~' libmelf-0.4.0.orig/tools/Makefile.in libmelf-0.4.0/tools/Makefile.in
+--- libmelf-0.4.0.orig/tools/Makefile.in 2003-09-17 01:03:49.000000000 -0700
++++ libmelf-0.4.0/tools/Makefile.in 2010-05-31 19:57:55.126198024 -0700
+@@ -1,11 +1,15 @@
+ cc=@CC@
+ DEFINES=@DEFINES@
++CFLAGS=${DEFINES} ${OPTFLAGS} -I..
++BINS=elfres
+
+-all:
+- ${CC} ${DEFINES} -I.. -Wall -O3 elfres.c -o elfres ../libmelf.a
++%: %.c
++ ${CC} $(CFLAGS) $^ -o $@ -L.. -lmelf
++
++all: $(BINS)
+
+ clean:
+- rm -f elfres
++ -rm -f $(BINS)
+
+ distclean:
+- rm -f elfres Makefile
++ -rm -f $(BINS) Makefile
diff --git a/dev-libs/libmelf/files/libmelf-0.4.1-unfinal-release.patch b/dev-libs/libmelf/files/libmelf-0.4.1-unfinal-release.patch
new file mode 100644
index 000000000000..359ceda352bb
--- /dev/null
+++ b/dev-libs/libmelf/files/libmelf-0.4.1-unfinal-release.patch
@@ -0,0 +1,145 @@
+diff -Nuar --exclude enum_sym --exclude configure libmelf-0.4.0.orig//ChangeLog elfsign-0.2.2/melf//ChangeLog
+--- libmelf-0.4.0.orig//ChangeLog 2004-05-03 22:15:29.000000000 -0700
++++ elfsign-0.2.2/melf//ChangeLog 2004-11-30 08:14:39.000000000 -0800
+@@ -1,3 +1,7 @@
++0.4.1
++
++ * Fixed issues with serializing SHT_DYNSYM
++
+ 0.4.0 05/04/2004
+
+ * Major enhancements to make the library more robust
+diff -Nuar --exclude enum_sym --exclude configure libmelf-0.4.0.orig//configure.in elfsign-0.2.2/melf//configure.in
+--- libmelf-0.4.0.orig//configure.in 2003-11-07 22:08:15.000000000 -0800
++++ elfsign-0.2.2/melf//configure.in 2004-06-05 10:44:17.000000000 -0700
+@@ -25,7 +25,7 @@
+ if test "x$cache_sys_os" = "xSolaris"; then
+ SHAREDEXEC="ld -dy -r -o libmelf.so \${OBJS}"
+ else
+- SHAREDEXEC="\${CC} \${FLAGS} -shared -fPIC \${OBJS} -o libmelf.so"
++ SHAREDEXEC="\${CC} \${FLAGS} -shared \${OBJS} -o libmelf.so"
+ fi
+
+ AC_C_BIGENDIAN()
+diff -Nuar --exclude enum_sym --exclude configure libmelf-0.4.0.orig//example/enum_sym.c elfsign-0.2.2/melf//example/enum_sym.c
+--- libmelf-0.4.0.orig//example/enum_sym.c 1969-12-31 16:00:00.000000000 -0800
++++ elfsign-0.2.2/melf//example/enum_sym.c 2004-11-27 18:04:36.000000000 -0800
+@@ -0,0 +1,39 @@
++#include <stdlib.h>
++#include <stdio.h>
++
++#include "melf.h"
++
++void enum_symtab(MELF *melf, ELF_SPEC_HEADER *curr);
++
++int main(int argc, char **argv)
++{
++ ELF_SPEC_HEADER *curr;
++ MELF *melf = melf_open(argv[1], MELF_ACCESS_ALL);
++
++ if (!melf)
++ return 0;
++
++ for (curr = melf_sectionGetEnum(melf);
++ curr;
++ curr = melf_sectionEnumNext(melf, curr))
++ {
++ if ((curr->spec.section.sh_type == SHT_DYNSYM) ||
++ (curr->spec.section.sh_type == SHT_SYMTAB))
++ {
++ enum_symtab(melf, curr);
++ }
++ }
++
++ return 0;
++}
++
++void enum_symtab(MELF *melf, ELF_SPEC_HEADER *curr)
++{
++ Elf32_Sym *sym;
++ unsigned long index = 0;
++
++ while ((sym = melf_symbolTableEnum(melf, curr, index++)))
++ {
++ printf("%s\n", melf_symbolGetName(melf, curr, sym));
++ }
++}
+diff -Nuar --exclude enum_sym --exclude configure libmelf-0.4.0.orig//Makefile.in elfsign-0.2.2/melf//Makefile.in
+--- libmelf-0.4.0.orig//Makefile.in 2003-11-07 22:09:10.000000000 -0800
++++ elfsign-0.2.2/melf//Makefile.in 2004-06-05 10:44:06.000000000 -0700
+@@ -6,7 +6,7 @@
+ DEFINES=@DEFINES@ -DMELF_COMP
+ INCLUDES=-I.
+ PREFIX=@PREFIX@
+-CFLAGS=${DEBUG} ${DEFINES} ${INCLUDES} -Wall -O3
++CFLAGS=${DEBUG} ${DEFINES} ${INCLUDES} -Wall -O3 -fPIC
+ LFLAGS=${DEBUG} ${DEFINES} ${INCLUDES} -Wall -O3 -o
+ LIBS=
+ OBJS=melf.o melf_dynamic.o melf_elf.o melf_list.o melf_note.o melf_program.o melf_reloc.o \
+diff -Nuar --exclude enum_sym --exclude configure libmelf-0.4.0.orig//melf_dynamic.c elfsign-0.2.2/melf//melf_dynamic.c
+--- libmelf-0.4.0.orig//melf_dynamic.c 2004-01-08 23:25:32.000000000 -0800
++++ elfsign-0.2.2/melf//melf_dynamic.c 2004-12-19 13:12:45.000000000 -0800
+@@ -227,7 +227,7 @@
+ return NULL;
+
+ dynamic->content = (void *)base;
+- (unsigned char *)base += dynamic->contentLength;
++ base = (Elf32_Dyn *)((char *)base + dynamic->contentLength);
+ dynamic->contentLength = newLength;
+
+ base->d_tag = DT_NULL;
+diff -Nuar --exclude enum_sym --exclude configure libmelf-0.4.0.orig//melf_note.c elfsign-0.2.2/melf//melf_note.c
+--- libmelf-0.4.0.orig//melf_note.c 2004-01-08 23:25:56.000000000 -0800
++++ elfsign-0.2.2/melf//melf_note.c 2004-12-19 13:13:16.000000000 -0800
+@@ -204,8 +204,8 @@
+ if (!base)
+ return NULL;
+
+- note->content = (void *)base;
+- (unsigned char *)base += note->contentLength;
++ note->content = (void *)base;
++ base = (Elf32_Nhdr *)((char *)base + note->contentLength);
+
+ memset(base, 0, newLength - note->contentLength);
+
+diff -Nuar --exclude enum_sym --exclude configure libmelf-0.4.0.orig//melf_section.c elfsign-0.2.2/melf//melf_section.c
+--- libmelf-0.4.0.orig//melf_section.c 2004-05-03 21:37:29.000000000 -0700
++++ elfsign-0.2.2/melf//melf_section.c 2004-11-27 17:46:45.000000000 -0800
+@@ -485,6 +485,7 @@
+ melf_relocInitializeRelaEntryList(melf, sect);
+ break;
+ case SHT_SYMTAB:
++ case SHT_DYNSYM:
+ melf_symbolTableInitializeEntryList(melf, sect);
+ break;
+ case SHT_DYNAMIC:
+@@ -511,6 +512,7 @@
+ case SHT_REL:
+ case SHT_RELA:
+ case SHT_SYMTAB:
++ case SHT_DYNSYM:
+ case SHT_DYNAMIC:
+ case SHT_NOTE:
+ case SHT_RES:
+@@ -534,6 +536,7 @@
+ melf_relocSynchronizeRelaEntryList(melf, sect);
+ break;
+ case SHT_SYMTAB:
++ case SHT_DYNSYM:
+ melf_symbolTableSynchronizeEntryList(melf, sect);
+ break;
+ case SHT_DYNAMIC:
+diff -Nuar --exclude enum_sym --exclude configure libmelf-0.4.0.orig//stdelf.h.in elfsign-0.2.2/melf//stdelf.h.in
+--- libmelf-0.4.0.orig//stdelf.h.in 2003-06-01 11:13:56.000000000 -0700
++++ elfsign-0.2.2/melf//stdelf.h.in 2004-05-11 07:38:17.000000000 -0700
+@@ -919,8 +919,8 @@
+ #define AT_FLAGS 8 /* Flags */
+ #define AT_ENTRY 9 /* Entry point of program */
+ #define AT_NOTELF 10 /* Program is not ELF */
+-#define AT_UID 11 /* Real uid */
+-#define AT_EUID 12 /* Effective uid */
++#define E_AT_UID 11 /* Real uid */
++#define E_AT_EUID 12 /* Effective uid */
+ #define AT_GID 13 /* Real gid */
+ #define AT_EGID 14 /* Effective gid */
+ #define AT_CLKTCK 17 /* Frequency of times() */
diff --git a/dev-libs/libmelf/libmelf-0.4.0-r1.ebuild b/dev-libs/libmelf/libmelf-0.4.0-r1.ebuild
new file mode 100644
index 000000000000..ecc5ecc76d3a
--- /dev/null
+++ b/dev-libs/libmelf/libmelf-0.4.0-r1.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=3
+inherit eutils flag-o-matic toolchain-funcs
+
+DESCRIPTION="libmelf is a library interface for manipulating ELF object files"
+HOMEPAGE="http://www.hick.org/code/skape/libmelf/"
+SRC_URI="http://www.hick.org/code/skape/${PN}/${P}.tar.gz"
+
+LICENSE="Artistic"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE=""
+
+DEPEND=""
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ # This patch was gained from the elfsign-0.2.2 release
+ epatch "${FILESDIR}"/${PN}-0.4.1-unfinal-release.patch
+ # Cleanup stuff
+ epatch "${FILESDIR}"/${PN}-0.4.0-r1-gcc-makefile-cleanup.patch
+}
+
+src_compile() {
+ append-flags -fPIC
+ emake CC="$(tc-getCC)" OPTFLAGS="${CFLAGS}" || die "emake failed"
+}
+
+src_install() {
+ into /usr
+ dobin tools/elfres
+ dolib.a libmelf.a
+ dolib.so libmelf.so
+ insinto /usr/include
+ doins melf.h stdelf.h
+ dodoc ChangeLog README
+ dohtml -r docs/html
+}
diff --git a/dev-libs/libmelf/metadata.xml b/dev-libs/libmelf/metadata.xml
new file mode 100644
index 000000000000..a4e0d354f696
--- /dev/null
+++ b/dev-libs/libmelf/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>robbat2@gentoo.org</email>
+ <name>Robin H. Johnson</name>
+ </maintainer>
+</pkgmetadata>