[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[microblaze-uclinux] Busybox problem



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi all,
I made a 'cvs update' yesterday in order to experience the port against
2.4.26 kernel.
I noticed two main things:

1) doing a cvs update broke my distro; d'loading a new one in a
different directory avoids compilation problems experienced in the
previous one

I had a 2.4.24 distro
after a cvs update I got compilation errors on sash, version, telnet,
telnetd and other apps
a new copy obtained with cvs co does not show those problems

2) I included busybox modutils and now it tells that insmod cannot be
compiled for this architecutre (microblaze) while with previous version
everything went fine

a diff showed that insmod misses the microblaze portions of code
(attached is the result of diff against old and new snapshots); no diffs
between rmmod.c, lsmod.c and modprobe.c

Anyone had experienced this behaviour?

Best regards

- ---------------------------------------------------------
Roberto Farina
CEFRIEL - Digital Technologies and Operating Systems Unit
Via Fucini, 2 - 20133 MILANO (ITALY)
Phone:  +39 02 23954 236
Fax:    +39 02 23954 254
~        178 606 5693
E-mail: roberto.farina@cefriel.it
- ---------------------------------------------------------
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFAoOsZzF5ONZxALKMRAle2AJ40X5A4I16XrWaQTeLWJneCtgonWwCgx3Tv
ssPV4BPGakOD9/+IFNXyK+k=
=eEal
-----END PGP SIGNATURE-----
209a210,222
> #if (defined (__microblaze__))
> 
> #define BB_USE_SINGLE
> 
> #define MATCH_MACHINE(x)	((x) == EM_XILINX_MICROBLAZE)
> #define SHT_RELM	SHT_RELA
> #define Elf32_RelM	Elf32_Rela
> 
> #define ELFCLASSM	ELFCLASS32
> 
> #endif
> 
> 
901a915,971
> #elif defined (__microblaze__)
> 	case R_MICROBLAZE_NONE:
> 	case R_MICROBLAZE_64_NONE:
> 	case R_MICROBLAZE_32_SYM_OP_SYM:	
> 	case R_MICROBLAZE_32_PCREL:
> 		break;
> 	case R_MICROBLAZE_64_PCREL:
> 	{
> 		/* dot is the address of the current instruction.
> 		 * v is the target symbol address.
> 		 * So we need to extract the offset in the code,
> 		 * adding v, then subtrating the current address 
> 		 * of this instruction.
> 		 * Ex: "IMM 0xFFFE  bralid 0x0000" = "bralid 0xFFFE0000"
> 		 */
> 		 
> 		/* Get split offset stored in code */
> 		unsigned int temp = (loc[0] & 0xFFFF) << 16 |
> 					(loc[1] & 0xFFFF);
> 
> 		/* Adjust relative offset. -4 adjustment required 
> 		 * because dot points to the IMM insn, but branch
> 		 * is computed relative to the branch instruction itself.
> 		 */
> 		temp += v - dot - 4;
> 
> 		/* Store back into code */
> 		loc[0] = (loc[0] & 0xFFFF0000) | temp >> 16;
> 		loc[1] = (loc[1] & 0xFFFF0000) | (temp & 0xFFFF);
> 
> 		}
> 		break;	
> 	case R_MICROBLAZE_32:
> 		*loc += v;
> 		break;
> 	case R_MICROBLAZE_64:
> 		{	
> 		/* Get split pointer stored in code */
> 		unsigned int temp1 = (loc[0] & 0xFFFF) << 16 |
> 					(loc[1] & 0xFFFF);
> 
> 		/* Add reloc offset */
> 		temp1+=v;
> 
> 		/* Store back into code */
> 		loc[0] = (loc[0] & 0xFFFF0000) | temp1 >> 16;
> 		loc[1] = (loc[1] & 0xFFFF0000) | (temp1 & 0xFFFF);
> 
> 		}
> 		break;
> 	case R_MICROBLAZE_32_PCREL_LO:
> 	case R_MICROBLAZE_32_LO:
> 	case R_MICROBLAZE_SRO32:
> 	case R_MICROBLAZE_SRW32:
> 		ret = obj_reloc_unhandled;
> 		break;	
>