Ich denke eher das es an der Umwandlung in Hex liegt.
ehdr.e_entry ergibt bei normaler Ausgabe einen Dezimalwert:
	
	cout <<  ehdr.e_entry << endl;
3217325056
 Dieser umgewandelt in Hex ergibt: 
bfc47c00 und das ist auch das gleiche was mir printf angezeigt hat (Entrypoint: 0xBFC47C00).
Da stelt sich nun die Frage, was bei der Umwandlung in Hex falsch läuft, bzw. welche Funktion funktioniert.
Bzw. bin ich mir über den Typ e_entry von nicht ganz im klaren.
Der Wert kommt aus dem 
struct typedef struct elf32_hdr{ und ist dort definiert als 
	
	Elf32_Addr      e_entry; /* Entry point */
 
	
	
	
		| e entry gibt den Einsprungpunkt im virtuellen Speicher an, an dem die Ausführung beginnt, nachdem das Programm geladen und im Speicher platziert worden ist. |