- if( symval == old_symval ) {
- WARNING("Can't find required external symbol '%s'", Info->strtab + sym->st_name);
- return 1;
+ if( symval == old_symval )
+ {
+ if( ELF32_ST_BIND(sym->st_info) != STB_WEAK )
+ {
+ WARNING("sym={val:%p,size:0x%x,info:0x%x,other:0x%x,shndx:%i}",
+ sym->st_value, sym->st_size, sym->st_info, sym->st_other, sym->st_shndx);
+ WARNING("Can't find required external symbol '%s' for R_386_COPY", Info->strtab + sym->st_name);
+ return 1;
+ }
+ // Don't bother doing the memcpy
+ TRACE("R_386_COPY (%p, %p, %i)", ptr, symval, size);
+ }
+ else
+ {
+ TRACE("R_386_COPY (%p, %p, %i)", ptr, symval, size);
+ memcpy(ptr, symval, size);