Am 01.06.2010 07:44, schrieb Peter Stuge:
> repository service wrote:
>> +++ trunk/src/cpu/x86/smm/Makefile.inc       Sun May 30 15:44:32 2010        
>> (r5600)
> ..
>> +    cd $(obj)/cpu/x86/smm; $(OBJCOPY) -I binary smm -O elf32-i386 -B i386 
>> smm_wrap.o
> 
> Could use --redefine-sym and -N to manage symbol names. An example at
> http://www.coreboot.org/Initramfs
We'd have to cope with all mangling rules that objcopy applies to the
full path. This is more robust.

And we can't use the same symbols we used to use, as the semantics of
size are different. Better use different ones, so any issue breaks the
build instead of breaking runtime.

>> +++ trunk/src/southbridge/intel/i82801dx/i82801dx_smi.c      Sun May 30 
>> 15:44:32 2010        (r5600)
> ..
>> +extern unsigned char _binary_smm_start;
>> +extern unsigned char _binary_smm_size;
> ..
>> +    memcpy((void *)0xa0000, &_binary_smm_start, (size_t)&_binary_smm_size);
> 
>> +++ trunk/src/southbridge/intel/i82801gx/i82801gx_smi.c      Sun May 30 
>> 15:44:32 2010        (r5600)
> ..
>> +    memcpy((void *)0xa0000, &_binary_smm_start, (size_t)&_binary_smm_size);
> 
> Is the pointer to _size really right?
Yes, objcopy doesn't store the size as a value in memory, but simply
stuffs another symbol into the symbol table.
We don't want the value at *(number of bytes), which is what we'd get
without the dereference.


Patrick

-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to