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 +#include + +#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() */