SGX libs with hardfp support

I'd like to annouce that I've managed to utilize the SGX core on the
BeagleBone on an ARM hard float ABI installation and also in a
headless configuration for GPGPU purposes (no DVI cape or LCD
attached). This was previously discussed here

http://groups.google.com/group/beagleboard/browse_thread/thread/b10cb261c82975a4/bd7df5f3678bf589

"SGX libs with hardfp support?" from 6/2011, But it looks like that
thread is closed.

I basically followed Mans Rullgard's suggestion of stripping
the .ARM.attributes ELF section (actually, I keep it, but edit it).
I've written a program to automate the process for any ARM soft float
API DLL. If anyone want's it, just ask. I'll need to clean up the code
before posting.

Technically, this simple hack only works for functions that don't pass
any float arguments. I've ran some simple OpenGL ES 2.0 apps and
verified they work.

Instructions:

  1. copy change_elf_section_type.cpp, makehardf, and ARM_VFP_attributes to /tmp. ARM_VFP_attributes is an ELF .ARM.attributes section I copied from a random Debian ARM hard float DLL that will be planted into the soft float DLLs.
  2. "g++ -o /tmp/changeSectionType (this program will change the section type of the .ARM.attributes section to the canonical number - needed only because objcopy doesn’t do the right thing)
  3. cd to the SGX DLL directory (e.g. gfx_rel_es5.x for BeagleBone)
  4. “/tmp/makehardf *.so”
  5. build and run your favorite OpenGL ES programs

I’ve verified this procedure only on Debian

makehardf.zip (1.2 KB)