On 07/03/2013 12:05 PM, Pedro Alves wrote: > On 07/02/2013 07:50 PM, Luis Machado wrote: >> - >> -if {[istarget "spu*-*-*"]} then { >> - # The internal address format used for the combined Cell/B.E. >> - # debugger requires 64-bit. >> - set is64bitonly "yes" >> -} >> - > > I'm not sure this equates to sizeof pointer == 64-bit. > This bit may need to be retained. [Adding Ulrich]. Fair enough. Ulrich, let me know if the pointer check in the attached patch doesn't make sense for Cell BE. > >> + >> + set sizeof_function_ptr [get_sizeof "void (*)(void)" 8] >> + set sizeof_data_ptr [get_sizeof "void *" 8] >> + if {${sizeof_function_ptr} != 4 && ${sizeof_data_ptr} != 4} then { >> + set is64bitonly "yes" >> + } >> +} >> + > > srec (etc.) is most used in small embedded targets (e.g., those > that include dsrec.o in the configure.tgt), consequently > that's where the test is most useful. Such targets > are the most likely to have 16-bit pointers (< 4 bytes). > E.g., h8300, etc. Looks like this ends up causing the tests to > be skipped there too. IOW, a better check would be: > > if {${sizeof_function_ptr} > 4 || ${sizeof_data_ptr} > 4} then { > Ah, yes. This check is indeed better. Follows an updated patch that does this. > But, this change also means we have reduced routine-checking, > as most people test on x86_64. I think we can do better. The test > works fine on e.g., x86_64, because programs get linked to low (< 32-bit) > addresses by default. That's the point of: > > if [istarget "alpha*-*-*"] then { > # SREC etc cannot handle 64-bit addresses. Force the test > # program into the low 31 bits of the address space. > lappend options "additional_flags=-Wl,-taso" > } > > (For MIPS N64, if you wanted, I guess you could do similarly > to Alpha, and rebuild with: > > lappend options "ldflags=-Wl,-Tdata=0x600000" > > to force use of low addresses.) > > IOW, instead of checking for ABI pointer sizes, I think it'd > be better to test for the actual address size of one the > variables dumped. That is, check that &intarray is < 32-bit. > If lack of coverage for x86_64 running things on low addresses is a problem, we can add an exception for x86_64, what do you think? Adding these exceptions usually polute the testcases though. As for MIPS, attempting to force the use of low addresses, just like alpha, seems to do more than what the tools expect at the moment, and i get a SIGSEGV in the dynamic loader. Luis